Java I/O is defined in terms of streams. The java.io package defines abstract classes for input and output streams. These classes are extended to provide stream types for specific purposes.
f = new FileReader("myinput");opens file myinput for reading.
LineNumberReader in = new LineNumberReader(f); // ... System.out.println(in.getLineNumber());