Read | Write | |
Text | Reader BufferedReader StringReader CharArrayReader FileReader … | Writer BufferedWriter StringWriter CharArrayWriter FileWriter PrintWriter … |
Binary | InputStream FileInputStream ByteArrayInputStream ObjectInputStream PipedInputStream … | OutputStream FileOutputStream ByteArrayOutputStream ObjectOutputStream PipedOutputStream … |
Stream
/**
* Reads all lines from a text file and prints them.
* Uses Java 1.0-era (circa 1996) Streams to read the file.
*/
public class StreamCat {
public static void main(String[] args) throws IOException {
DataInputStream dis = new DataInputStream( new FileInputStream(args[0]));
// Don't do this! DataInputStream.readLine is DEPRECATED!
String line;
while ((line = dis.readLine()) != null)
System.out.println(line);
}
}
Reader
/**
* Reads all lines from a text file and prints them.
* Uses Java 1.1-era (circa 1997) Streams to read the file.
*/
public class ReaderCat {
public static void main(String[] args) throws IOException {
try (BufferedReader rd = new BufferedReader( new FileReader(args[0]))) {
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
// you could also wrap System.out in a PrintWriter
}
}
}
}
Nio
/**
* Reads all lines from a text file and prints them.
* Uses nio FileChannel and ByteBuffer.
*/
public class NioCat {
public static void main(String[] args) throws IOException {
ByteBuffer buf = ByteBuffer.allocate(512);
try (FileChannel ch = FileChannel.open(Paths.get(args[0]), StandardOpenOption.READ)) {
int n;
while ((n = ch.read(buf)) > -1) {
System.out.print(new String(buf.array(), 0, n));
buf.clear();
}
}
}
}
Scanner
/**
* Reads all lines from a text file and prints them
* Uses Java 5 scanner.
*/
public class ScannerCat {
public static void main(String[] args) throws IOException {
try (Scanner s = new Scanner(new File(args[0]))) {
while (s.hasNextLine())
System.out.println(s.nextLine());
}
}
}
Lines
/**
* Reads all lines from a text file and prints them. Uses Files,
* Java 8-era Stream API (not IO Streams!) and method references.
*/
public class LinesCat {
public static void main(String[] args) throws IOException {
Files.lines(Paths.get(args[0])).forEach(System.out::println);
}
}