I/O
io3CharacterStreams
- Path
- pkg9io/io3CharacterStreams.java
- Package
- pkg9io
- Study order
- 3
- Run
- Single-file source launch
- Command
- java pkg9io/io3CharacterStreams.java
There is no in-browser runner. This is the file from the curriculum, unchanged.
1package pkg9io;2 3import java.io.BufferedReader;4import java.io.BufferedWriter;5import java.io.FileReader;6import java.io.FileWriter;7import java.io.IOException;8import java.io.PrintWriter;9import java.io.StringReader;10import java.nio.file.Files;11import java.nio.file.Path;12 13/*14 * io3CharacterStreams.java15 * ------------------------16 * Character streams: Reader / Writer for text, with encoding handled for you.17 *18 * DEFINITION:19 * Character streams convert between bytes and 16-bit chars using a charset.20 * Use them whenever you read or write text instead of raw bytes.21 *22 * KEY POINTS:23 * - BufferedReader.readLine() reads a line at a time; returns null at EOF.24 * - BufferedWriter / PrintWriter buffer output; PrintWriter adds println/printf.25 * - FileReader/FileWriter use the platform charset (prefer Files.* with UTF-8).26 * - try-with-resources closes and flushes automatically.27 */28public class io3CharacterStreams {29 30 public static void main(String[] args) throws IOException {31 Path file = Files.createTempFile("io3", ".txt");32 33 // WRITE text line by line34 try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file.toFile())))) {35 out.println("line 1: hello");36 out.printf("line %d: %s%n", 2, "formatted");37 out.println("line 3: end");38 }39 40 // READ text line by line41 System.out.println("File contents:");42 try (BufferedReader in = new BufferedReader(new FileReader(file.toFile()))) {43 String line;44 int n = 1;45 while ((line = in.readLine()) != null) { // null == end of file46 System.out.println(" " + (n++) + " | " + line);47 }48 }49 50 // Reader over an in-memory String, plus the Stream-of-lines API (Java 8+)51 String csv = "a,1\nb,2\nc,3";52 System.out.println("\nParsed from StringReader:");53 try (BufferedReader r = new BufferedReader(new StringReader(csv))) {54 r.lines()55 .map(l -> l.split(","))56 .forEach(parts -> System.out.println(" key=" + parts[0] + " val=" + parts[1]));57 }58 59 Files.deleteIfExists(file);60 }61}