package test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.TreeSet; public class TextFile extends ArrayList<String> { // Read a file, split by any regular expression: public TextFile(String fileName, String splitter) { super(Arrays.asList(read(fileName).split(splitter))); if ("".equals(get(0))) remove(0); } // Normally read by lines: public TextFile(String fileName) { this(fileName, " "); } public void write(String fileName) { try { PrintWriter pw = new PrintWriter(new File(fileName).getAbsolutePath()); try { for (String item : this) { pw.println(item); } } finally { pw.close(); } } catch (IOException e) { throw new RuntimeException(e); } } // 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).getAbsolutePath())); String s; try { while ((s = in.readLine()) != null) { sb.append(s); sb.append(" "); } } 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 pw = new PrintWriter(new File(fileName).getAbsolutePath()); try { pw.print(text); } finally { pw.close(); } } catch (IOException e) { throw new RuntimeException(e); } } public static void main(String[] args) { // Example 1 String file = read("E:\\gittest\Test1.txt"); write("E:\\gittest\Test2.txt", file); // Example 2 TextFile tf = new TextFile("E:\\gittest\Test1.txt"); tf.write("E:\\gittest\Test3.txt"); // Break into unique sorted list of words: TreeSet<String> set = new TreeSet<String>(new TextFile("src\test\TextFile.java", "\W+")); // Display the capitalized words: System.out.println(set.headSet("a")); } }