Next: The StringTokenizer class. Up: Text files. Previous: The PrintWriter class.
Like PrintWriter is layered on top of a FileWriter, so the BufferedReader is layered on top of a FileReader.
There are just two instance methods worth knowing about in the BufferedReader class.
The following program takes a file name from the command line, reads the file into memory, and then prints it out with the lines in reverse order.
import java.util.*;
import java.io.*;
public class Reverse {
    public static void main(String[] args) {
        BufferedReader file;
        try {
            if(args.length != 1) {
                System.err.println("usage: java Reverse filename");
                return;
            }
            file = new BufferedReader(new FileReader(new File(args[0])));
        } catch(FileNotFoundException e) {
            System.err.println("Error opening file " + args[0]
                + ": " + e.getMessage();
            return;
        }
        Vector lines = new Vector();
        try {
            while(true) {
                String line = file.readLine();
                if(line == null) break;
                lines.addElement(line);
            }
            file.close();
        } catch(IOException e) {
            System.err.println("Error reading file: " + e.getMessage());
            return;
        }
        for(int i = lines.size() - 1; i >= 0; i--) {
            System.out.println(lines.elementAt(i));
        }
    }
}
Next: The StringTokenizer class. Up: Text files. Previous: The PrintWriter class.