BufferedReader & StringTokenizer for High-Speed I/O
1Concept
BufferedReader reads text from a character-input stream, buffering characters into an internal 8KB buffer for efficient line reading. Combined with StringTokenizer, it is 5x-10x faster than Scanner, making it the industry standard for competitive programming and high-throughput data processing.
2Architecture Diagram
[ Raw Byte Stream: System.in ]
|
v
[ InputStreamReader (Decodes bytes to chars via UTF-8) ]
|
v
[ BufferedReader (8192-char memory buffer) ] ---> .readLine() (Instant string retrieval)3Code Example
Core Java
import java.io.BufferedReader;
import java.io.StringReader;
import java.util.StringTokenizer;
public class FastIoDemo {
public static void main(String[] args) throws Exception {
String data = "100 200 300 400 500\n";
BufferedReader reader = new BufferedReader(new StringReader(data));
String line = reader.readLine();
StringTokenizer tokenizer = new StringTokenizer(line);
int sum = 0;
while (tokenizer.hasMoreTokens()) {
sum += Integer.parseInt(tokenizer.nextToken());
}
System.out.println("Fast I/O Computed Sum: " + sum);
}
}4Expected Output
Fast I/O Computed Sum: 1500
5Key Takeaways
- ✓BufferedReader default buffer size is 8192 characters (8KB) vs Scanner's 1024 characters.
- ✓BufferedReader is thread-safe; Scanner is not thread-safe.
- ✓readLine() returns null at EOF, whereas Scanner throws NoSuchElementException.