Java : BufferedReader with Examples

BufferedReader (Java SE 21 & JDK 21) with Examples.
You will find code examples on most BufferedReader methods.


Summary

Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.

Class diagram

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

try (final var reader = Files.newBufferedReader(path)) {

    System.out.println(reader.readLine()); // abcd
    System.out.println(reader.readLine()); // XYZ
    System.out.println(reader.readLine()); // 12345
    System.out.println(reader.readLine()); // null
}

Fields declared in Reader

lock

Please see the link below.

Constructors

BufferedReader (Reader in)

Creates a buffering character-input stream that uses a default-sized input buffer.

final var s = """
        abcd
        XYZ
        """;

try (final var reader = new BufferedReader(new StringReader(s))) {

    System.out.println(reader.readLine()); // abcd
    System.out.println(reader.readLine()); // XYZ
    System.out.println(reader.readLine()); // null
}

BufferedReader (Reader in, int sz)

Creates a buffering character-input stream that uses an input buffer of the specified size.

final var s = """
        abcd
        XYZ
        """;

try (final var reader = new BufferedReader(new StringReader(s), 128)) {

    System.out.println(reader.readLine()); // abcd
    System.out.println(reader.readLine()); // XYZ
    System.out.println(reader.readLine()); // null
}

Methods

void close ()

Closes the stream and releases any system resources associated with it.

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, "abcd");

try (final var reader = Files.newBufferedReader(path)) {

    final var cbuf = new char[4];

    System.out.println(reader.read(cbuf)); // 4
    System.out.println(Arrays.toString(cbuf)); // [a, b, c, d]
}
// An example without a try-with-resources statement.
final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, "abcd");

final var reader = Files.newBufferedReader(path);
try {
    final var cbuf = new char[4];

    System.out.println(reader.read(cbuf)); // 4
    System.out.println(Arrays.toString(cbuf)); // [a, b, c, d]
} finally {
    reader.close();
}

Stream<String> lines ()

Returns a Stream, the elements of which are lines read from this BufferedReader.

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

try (final var reader = Files.newBufferedReader(path)) {

    final var lines = reader.lines();
    lines.forEach(System.out::println);
}

// Result
// ↓
//abcd
//XYZ
//12345

void mark (int readAheadLimit)

Marks the present position in the stream.

try (final var reader = new BufferedReader(new StringReader("abcde"))) {

    System.out.printf("%c%n", reader.read()); // a
    System.out.printf("%c%n", reader.read()); // b
    System.out.printf("%c%n", reader.read()); // c

    reader.mark(3);

    System.out.printf("%c%n", reader.read()); // d
    System.out.printf("%c%n", reader.read()); // e
    System.out.println(reader.read()); // -1

    reader.reset();

    System.out.printf("%c%n", reader.read()); // d
    System.out.printf("%c%n", reader.read()); // e
    System.out.println(reader.read()); // -1

    reader.reset();
    reader.mark(2);

    System.out.printf("%c%n", reader.read()); // d
    System.out.printf("%c%n", reader.read()); // e
    System.out.println(reader.read()); // -1

    try {
        reader.reset();
    } catch (IOException e) {
        System.out.println(e);
    }

    // Result
    // ↓
    //java.io.IOException: Mark invalid
}

boolean markSupported ()

Tells whether this stream supports the mark() operation, which it does.

try (final var reader = Files.newBufferedReader(
        Path.of("R:", "java-work", "aaa.txt"))) {
    System.out.println(reader.markSupported()); // true
}

try (final var reader = new BufferedReader(new StringReader("abcd"))) {
    System.out.println(reader.markSupported()); // true
}

int read ()

Reads a single character.

try (final var reader = new BufferedReader(new StringReader("abc"))) {

    System.out.printf("%c%n", reader.read()); // a
    System.out.printf("%c%n", reader.read()); // b
    System.out.printf("%c%n", reader.read()); // c
    System.out.println(reader.read()); // -1
}

int read (char[] cbuf, int off, int len)

Reads characters into a portion of an array.

try (final var reader = new BufferedReader(new StringReader("abcdefg"))) {

    final var cbuf = new char[5];

    System.out.println(reader.read(cbuf, 0, 1)); // 1
    System.out.println(Arrays.toString(cbuf)); // [a,  ,  ,  ,  ]

    System.out.println(reader.read(cbuf, 0, 2)); // 2
    System.out.println(Arrays.toString(cbuf)); // [b, c,  ,  ,  ]

    System.out.println(reader.read(cbuf, 0, 3)); // 3
    System.out.println(Arrays.toString(cbuf)); // [d, e, f,  ,  ]

    System.out.println(reader.read(cbuf, 0, 4)); // 1
    System.out.println(Arrays.toString(cbuf)); // [g, e, f,  ,  ]

    System.out.println(reader.read(cbuf, 0, 5)); // -1
    System.out.println(Arrays.toString(cbuf)); // [g, e, f,  ,  ]
}
try (final var reader = new BufferedReader(new StringReader("abcde"))) {

    final var cbuf = new char[5];

    System.out.println(reader.read(cbuf, 4, 1)); // 1
    System.out.println(Arrays.toString(cbuf)); // [ ,  ,  ,  , a]

    System.out.println(reader.read(cbuf, 3, 1)); // 1
    System.out.println(Arrays.toString(cbuf)); // [ ,  ,  , b, a]

    System.out.println(reader.read(cbuf, 2, 1)); // 1
    System.out.println(Arrays.toString(cbuf)); // [ ,  , c, b, a]

    System.out.println(reader.read(cbuf, 1, 1)); // 1
    System.out.println(Arrays.toString(cbuf)); // [ , d, c, b, a]

    System.out.println(reader.read(cbuf, 0, 1)); // 1
    System.out.println(Arrays.toString(cbuf)); // [e, d, c, b, a]
}
try (final var reader = new BufferedReader(new StringReader("abcdefg"))) {

    final var cbuf = new char[3];

    System.out.println(reader.read(cbuf, 0, 3)); // 3
    System.out.println(Arrays.toString(cbuf)); // [a, b, c]

    //reader.read(cbuf, 0, 4); // IndexOutOfBoundsException
    //reader.read(cbuf, 3, 1); // IndexOutOfBoundsException
}

String readLine ()

Reads a line of text.

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

try (final var reader = Files.newBufferedReader(path)) {

    System.out.println(reader.readLine()); // abcd
    System.out.println(reader.readLine()); // XYZ
    System.out.println(reader.readLine()); // 12345
    System.out.println(reader.readLine()); // null
}

boolean ready ()

Tells whether this stream is ready to be read.

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, "abc");

try (final var reader = Files.newBufferedReader(path)) {

    System.out.println(reader.ready()); // true
    System.out.printf("%c%n", reader.read()); // a

    System.out.println(reader.ready()); // true
    System.out.printf("%c%n", reader.read()); // b

    System.out.println(reader.ready()); // true
    System.out.printf("%c%n", reader.read()); // c

    System.out.println(reader.ready()); // false
    System.out.println(reader.read()); // -1
}

void reset ()

Resets the stream to the most recent mark.

try (final var reader = new BufferedReader(new StringReader("abcde"))) {

    System.out.printf("%c%n", reader.read()); // a
    System.out.printf("%c%n", reader.read()); // b
    System.out.printf("%c%n", reader.read()); // c

    reader.mark(3);

    System.out.printf("%c%n", reader.read()); // d
    System.out.printf("%c%n", reader.read()); // e
    System.out.println(reader.read()); // -1

    reader.reset();

    System.out.printf("%c%n", reader.read()); // d
    System.out.printf("%c%n", reader.read()); // e
    System.out.println(reader.read()); // -1

    reader.reset();
    reader.mark(2);

    System.out.printf("%c%n", reader.read()); // d
    System.out.printf("%c%n", reader.read()); // e
    System.out.println(reader.read()); // -1

    try {
        reader.reset();
    } catch (IOException e) {
        System.out.println(e);
    }

    // Result
    // ↓
    //java.io.IOException: Mark invalid
}

Methods declared in Reader

nullReader, read, read, skip, transferTo

Please see the link below.


Related posts

To top of page