Package java.io

Class BufferedReader

java.lang.Object
java.io.Reader
java.io.BufferedReader
All Implemented Interfaces:
Closeable, AutoCloseable, Readable
Direct Known Subclasses:
LineNumberReader, PemReader

public class BufferedReader
extends Reader
Wraps an existing Reader and buffers the input. Expensive interaction with the underlying reader is minimized, since most (smaller) requests can be satisfied by accessing the buffer alone. The drawback is that some extra space is required to hold the buffer and that copying takes place when filling that buffer, but this is usually outweighed by the performance benefits.

A typical application pattern for the class looks like this:

 BufferedReader buf = new BufferedReader(new FileReader("file.java"));
 
Since:
1.1
See Also:
BufferedWriter
  • Field Summary

    Fields inherited from class java.io.Reader

    lock
  • Constructor Summary

    Constructors
    Constructor Description
    BufferedReader​(Reader in)
    Constructs a new BufferedReader, providing in with a buffer of 8192 characters.
    BufferedReader​(Reader in, int size)
    Constructs a new BufferedReader, providing in with size characters of buffer.
  • Method Summary

    Modifier and Type Method Description
    void close()
    Closes this reader.
    void mark​(int markLimit)
    Sets a mark position in this reader.
    boolean markSupported()
    Indicates whether this reader supports the mark() and reset() methods.
    int read()
    Reads a single character from this reader and returns it with the two higher-order bytes set to 0.
    int read​(char[] buffer, int offset, int length)
    Reads up to length characters from this reader and stores them at offset in the character array buffer.
    String readLine()
    Returns the next line of text available from this reader.
    boolean ready()
    Indicates whether this reader is ready to be read without blocking.
    void reset()
    Resets this reader's position to the last mark() location.
    long skip​(long charCount)
    Skips at most charCount chars in this stream.

    Methods inherited from class java.io.Reader

    read, read

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • BufferedReader

      public BufferedReader​(Reader in)
      Constructs a new BufferedReader, providing in with a buffer of 8192 characters.
      Parameters:
      in - the Reader the buffer reads from.
    • BufferedReader

      public BufferedReader​(Reader in, int size)
      Constructs a new BufferedReader, providing in with size characters of buffer.
      Parameters:
      in - the InputStream the buffer reads from.
      size - the size of buffer in characters.
      Throws:
      IllegalArgumentException - if size <= 0.
  • Method Details

    • close

      public void close() throws IOException
      Closes this reader. This implementation closes the buffered source reader and releases the buffer. Nothing is done if this reader has already been closed.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class Reader
      Throws:
      IOException - if an error occurs while closing this reader.
    • mark

      public void mark​(int markLimit) throws IOException
      Sets a mark position in this reader. The parameter markLimit indicates how many characters can be read before the mark is invalidated. Calling reset() will reposition the reader back to the marked position if markLimit has not been surpassed.
      Overrides:
      mark in class Reader
      Parameters:
      markLimit - the number of characters that can be read before the mark is invalidated.
      Throws:
      IllegalArgumentException - if markLimit < 0.
      IOException - if an error occurs while setting a mark in this reader.
      See Also:
      markSupported(), reset()
    • markSupported

      public boolean markSupported()
      Indicates whether this reader supports the mark() and reset() methods. This implementation returns true.
      Overrides:
      markSupported in class Reader
      Returns:
      true for BufferedReader.
      See Also:
      mark(int), reset()
    • read

      public int read() throws IOException
      Reads a single character from this reader and returns it with the two higher-order bytes set to 0. If possible, BufferedReader returns a character from the buffer. If there are no characters available in the buffer, it fills the buffer and then returns a character. It returns -1 if there are no more characters in the source reader.
      Overrides:
      read in class Reader
      Returns:
      the character read or -1 if the end of the source reader has been reached.
      Throws:
      IOException - if this reader is closed or some other I/O error occurs.
    • read

      public int read​(char[] buffer, int offset, int length) throws IOException
      Reads up to length characters from this reader and stores them at offset in the character array buffer. Returns the number of characters actually read or -1 if the end of the source reader has been reached. If all the buffered characters have been used, a mark has not been set and the requested number of characters is larger than this readers buffer size, BufferedReader bypasses the buffer and simply places the results directly into buffer.
      Specified by:
      read in class Reader
      Throws:
      IndexOutOfBoundsException - if offset < 0 || length < 0 || offset + length > buffer.length.
      IOException - if this reader is closed or some other I/O error occurs.
    • readLine

      public String readLine() throws IOException
      Returns the next line of text available from this reader. A line is represented by zero or more characters followed by '\n', '\r', "\r\n" or the end of the reader. The string does not include the newline sequence.
      Returns:
      the contents of the line or null if no characters were read before the end of the reader has been reached.
      Throws:
      IOException - if this reader is closed or some other I/O error occurs.
    • ready

      public boolean ready() throws IOException
      Indicates whether this reader is ready to be read without blocking.
      Overrides:
      ready in class Reader
      Returns:
      true if this reader will not block when read is called, false if unknown or blocking will occur.
      Throws:
      IOException - if this reader is closed or some other I/O error occurs.
      See Also:
      read(), read(char[], int, int), readLine()
    • reset

      public void reset() throws IOException
      Resets this reader's position to the last mark() location. Invocations of read() and skip() will occur from this new location.
      Overrides:
      reset in class Reader
      Throws:
      IOException - if this reader is closed or no mark has been set.
      See Also:
      mark(int), markSupported()
    • skip

      public long skip​(long charCount) throws IOException
      Skips at most charCount chars in this stream. Subsequent calls to read will not return these chars unless reset is used.

      Skipping characters may invalidate a mark if markLimit is surpassed.

      Overrides:
      skip in class Reader
      Returns:
      the number of characters actually skipped.
      Throws:
      IllegalArgumentException - if charCount < 0.
      IOException - if this reader is closed or some other I/O error occurs.
      See Also:
      Reader.mark(int), Reader.markSupported(), Reader.reset()