Phase 4 of 20 · Topic 4.2

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.