# Buffered Streams Buffering se I/O performance improve hoti hai — disk reads kam hote hain. ## BufferedWriter ```java try (BufferedWriter bw = new BufferedWriter(new FileWriter("data.txt"))) { bw.write("Line 1"); bw.newLine(); // Platform-independent newline bw.write("Line 2"); bw.newLine(); bw.write("Line 3"); // flush() hota hai automatically on close } ``` ## BufferedReader — Line by line read ```java // readLine() — Most common way to read text files try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) { String line; while ((line = br.readLine()) != null) { System.out.println(line); } } // Java 8+ lines() — Stream try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) { br.lines() .filter(line -> !line.isEmpty()) .forEach(System.out::println); } ``` ## Files.readAllLines() — Simplest (Java 7+) ```java import java.nio.file.*; import java.nio.charset.StandardCharsets; List<String> lines = Files.readAllLines(Path.of("data.txt"), StandardCharsets.UTF_8); lines.forEach(System.out::println); // Write all lines List<String> content = Arrays.asList("Line 1", "Line 2", "Line 3"); Files.write(Path.of("output.txt"), content, StandardCharsets.UTF_8); ``` ## Performance Comparison ```java // Without buffering — slow (disk hit every read) FileReader fr = new FileReader("large.txt"); // With buffering — fast (reads chunk at a time) BufferedReader br = new BufferedReader(new FileReader("large.txt"), 8192); // 8KB buffer ```