//Static functions for reading and writing text files as//a single string, and treating a file as an ArrayList.
packagecom.java.io;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.TreeSet;public class TextFile extends ArrayList{//Read a file as a single string:
public staticString read(String fileName) {
StringBuilder sb= newStringBuilder();try{
BufferedReader in= new BufferedReader(newFileReader(newFile(fileName).getAbsoluteFile()));try{
String s;while((s = in.readLine()) != null) {
sb.append(s);
sb.append("\n");
}
}finally{
in.close();
}
}catch(IOException e) {throw newRuntimeException(e);
}returnsb.toString();
}//Write a single file in one method call:
public static voidwrite(String fileName, String text) {try{
PrintWriter out= newPrintWriter(newFile(fileName).getAbsoluteFile());try{
out.print(text);
}finally{
out.close();
}
}catch(IOException e) {throw newRuntimeException(e);
}
}public voidwrite(String fileName) {try{
PrintWriter out= newPrintWriter(newFile(fileName).getAbsoluteFile());try{for(String item : this)
out.println(item);
}finally{
out.close();
}
}catch(IOException e) {throw newRuntimeException(e);
}
}//Read a file, split by any regular expression:
publicTextFile(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:
publicTextFile(String fileName) {this(fileName, "\n");
}public static voidmain(String[] args) {
String file= read("src/com/java/io/TextFile.java");
write("test.txt", file);
TextFile text= new TextFile("test.txt");
text.write("test2.txt");//Break into unique sorted list of words://TreeSet是有序的set//\\W+以非单词分割,得到的都是单词list,TextFile本身就是一个ArrayList,组成了TextFile;//TreeSet的构造函数 TreeSet
TreeSet words = new TreeSet(new TextFile("src/com/java/io/TextFile.java", "\\W+"));//Display the capitalized words://打印出TreeSet中小于'a'的,就是打印出大写字母的
System.out.println(words.headSet("a"));
}
}