I/O 简单文本文件读写改 对象 ArrayList保存文件的记录,文本文件arraylist
I/O 简单文本文件读写改 对象 ArrayList保存文件的记录,文本文件arraylist
建立一个类TextFile ,继承ArrayList 类
哪么TextFile 拥有ArrayList public类成员数据和方法。
目的:1、用ArrayList对象保存从文本文件中读出的记录
2、可以用ArrayList类里面的所有的方法对文件中记录进行修改,删除,非常方便
3、修改后的文件内容存入另一个文本文件中。
** 对于 一整个大字符串,怎么分成一个个单个值,保存在数组中,我们可以利用正则表达式定分割的标准,
现在默认是换行\n,或者是可以换成\\W+
\\W+:表示分割符号可以不是(a--z A--z - 0--9),即分割符只要不含字母,数子,下划线,全部当成分割符号,
这样分割符号是\n,逗号,空格等等 ,
**类里面的方法里this:编译器默认是ArrayList的 private transient Object[] elementData,
elementData是private ,建立类TextFile对象时利用父类构造函数赋值elementData。
for(String item : this) //默认调用了 ArrayList iterator() 方法。
out.println(item);
下面的类执行顺序:
1、读出一个文件,放入到一个StringBuilder 中。
2、把StringBuilder 中的内容 写入一个文本文件test.txt。
3、建立类TextFile 的对象,ArrayList父类对象,
读出test.txt的内容,并以数组得方式保存在ArrayList对象下的类成员elementData 中
4、这样我们就可以随便用ArrayList类的方法对数据进行操作
5、修改之后保存在另一个文本文件中。
package net.mindview.util;
import java.io.*;
import java.util.*;
public class TextFile extends ArrayList<String> {
// Read a file as a single string:
public static String read(String fileName) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader in= new BufferedReader(new FileReader(new File(fileName).getAbsoluteFile()));
try {
String s;
while((s = in.readLine()) != null) {
sb.append(s);
sb.append("\n");
}
} finally {
in.close();
}
} catch(IOException e) {
throw new RuntimeException(e);
}
return sb.toString();
}
// Write a single file in one method call:
public static void write(String fileName, String text) {
try {
PrintWriter out = new PrintWriter( new File(fileName).getAbsoluteFile());
try {
out.print(text);
} finally {
out.close();
}
} catch(IOException e) {
throw new RuntimeException(e);
}
}
// Read a file, split by any regular expression:
public TextFile(String fileName, String splitter) {
super(Arrays.asList(read(fileName).split(splitter)));
// Regular expression split() often leaves an empty
// String at the first position:
if(get(0).equals("")) remove(0);
}
// Normally read by lines:
public TextFile(String fileName) {
this(fileName, "\n");
}
public void write(String fileName) {
try {
PrintWriter out = new PrintWriter(new File(fileName).getAbsoluteFile());
try {
for(String item : this)
out.println(item);
} finally {
out.close();
}
} catch(IOException e) {
throw new RuntimeException(e);
}
}
// Simple test:
public static void main(String[] args) {
//系统默认是当前工程所在目录
String file = read("src\\net\\mindview\\util\\TextFile.java");
System.out.println("file:"+file);
//写到当前工程目录,如果没有文件,则建立。
write("test.txt", file);
//从test.txt 读出来,放入数组中
TextFile text = new TextFile("test.txt");
//再写入文件2中
text.write("test2.txt");
}
}
相关文章
- 暂无相关文章
用户点评