下面的TextFile类包含static 方法可以像简单字符串那样读写文本文件,并且可以创建一个TextFile对象,它用一个ArrayList来保存文件的若干行。
package io;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.TreeSet;
import static net.mindview.util.Print.*;
/*文件读写工具类。
* read()方法将每行添加到StringBuffer,并且每行换上换行符,因为在读的时候换行符会被去除掉。
* 接着返回一个包含整个文件的字符串。
* write()打开文本并将其写入文件。*/
public class TextFile extends ArrayList<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();
}
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);
}
}
public TextFile(String fileName,String splitter){
super(Arrays.asList(read(fileName).split(splitter)));
}
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);
}
}
public static void main(String[] args){
String file=read("D:\\NewJavaWorkspace\\18JavaIO系统\\src\\io\\TextFile.java");
write("test.txt",file);
TextFile text=new TextFile("test.txt");
text.write("test2.txt");
TreeSet<String> words=new TreeSet<String>(
new TextFile(
"D:\\NewJavaWorkspace\\18JavaIO系统\\src\\io\\TextFile.java","\\W+"));
print(words.headSet("a"));
}
}