Java : BufferedReader with Examples

BufferedReader (Java SE 17 & JDK 17) API 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
        """);

// --- PowerShell ---
//PS R:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---     15 aaa.txt

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
        """);

// --- PowerShell ---
//PS R:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---     15 aaa.txt

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.println("%c".formatted(reader.read())); // a
    System.out.println("%c".formatted(reader.read())); // b
    System.out.println("%c".formatted(reader.read())); // c

    reader.mark(3);

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

    reader.reset();

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

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

    System.out.println("%c".formatted(reader.read())); // d
    System.out.println("%c".formatted(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.println("%c".formatted(reader.read())); // a
    System.out.println("%c".formatted(reader.read())); // b
    System.out.println("%c".formatted(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
        """);

// --- PowerShell ---
//PS R:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---     15 aaa.txt

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.println("%c".formatted(reader.read())); // a

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

    System.out.println(reader.ready()); // true
    System.out.println("%c".formatted(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.

Please see mark(int readAheadLimit).

Methods declared in Reader

nullReader, read, read, skip, transferTo

Please see the link below.


Related posts

To top of page