Class BufferedRandom

  • Direct Known Subclasses:
    LineBufferedRandom

    public class BufferedRandom
    extends BufferedIOMixin
    A buffered reader and writer together for a random access file.
    Author:
    Philip Jenvey
    • Constructor Summary

      Constructors 
      Constructor Description
      BufferedRandom​(RawIOBase rawIO, int bufferSize)
      Construct a BufferedRandom of bufferSize, wrapping the given RawIOBase.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void flush()
      Flushes write buffers, if applicable.
      java.nio.ByteBuffer peek​(int size)
      Returns buffered bytes without advancing the position.
      java.nio.ByteBuffer read​(int size)
      Read and return up to size bytes, contained in a ByteBuffer.
      int read1​(java.nio.ByteBuffer bytes)
      Reads up to bytes.remaining() bytes.
      java.nio.ByteBuffer readall()
      Read until EOF.
      int readinto​(java.nio.ByteBuffer bytes)
      Read up to bytes.remaining() bytes into the given ByteBuffer.
      long seek​(long pos, int whence)
      Seek to byte offset pos relative to position indicated by whence: 0 Start of stream (the default). pos should be >= 0; 1 Current position - whence may be negative; 2 End of stream - whence usually negative.
      long tell()
      Return the current stream position.
      int write​(java.nio.ByteBuffer bytes)
      Write the given ByteBuffer to the IO stream.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BufferedRandom

        public BufferedRandom​(RawIOBase rawIO,
                              int bufferSize)
        Construct a BufferedRandom of bufferSize, wrapping the given RawIOBase.
        Parameters:
        rawIO -
        bufferSize -
    • Method Detail

      • seek

        public long seek​(long pos,
                         int whence)
        Description copied from class: IOBase
        Seek to byte offset pos relative to position indicated by whence: 0 Start of stream (the default). pos should be >= 0; 1 Current position - whence may be negative; 2 End of stream - whence usually negative. Returns the new absolute position.
        Overrides:
        seek in class BufferedIOMixin
        Parameters:
        pos - a long position value
        whence - an int whence value
        Returns:
        a long position value seeked to
      • tell

        public long tell()
        Description copied from class: IOBase
        Return the current stream position.
        Overrides:
        tell in class BufferedIOMixin
        Returns:
        a long position value
      • read

        public java.nio.ByteBuffer read​(int size)
        Description copied from class: BufferedIOBase
        Read and return up to size bytes, contained in a ByteBuffer. ByteBuffers returned from read are already flip()'d. Returns an empty ByteBuffer on EOF
        Overrides:
        read in class BufferedIOBase
        Parameters:
        size - the number of bytes to read
        Returns:
        a ByteBuffer containing the bytes read
      • readall

        public java.nio.ByteBuffer readall()
        Description copied from class: BufferedIOBase
        Read until EOF.
        Overrides:
        readall in class BufferedIOBase
        Returns:
        a ByteBuffer containing the bytes read
      • readinto

        public int readinto​(java.nio.ByteBuffer bytes)
        Description copied from class: BufferedIOBase
        Read up to bytes.remaining() bytes into the given ByteBuffer. Returns number of bytes read (0 for EOF).
        Overrides:
        readinto in class BufferedIOBase
        Parameters:
        bytes - a ByteBuffer to read bytes into
        Returns:
        the amount of data read as an int
      • write

        public int write​(java.nio.ByteBuffer bytes)
        Description copied from class: BufferedIOBase
        Write the given ByteBuffer to the IO stream. Returns the number of bytes written, which may be less than bytes.remaining().
        Overrides:
        write in class BufferedIOBase
        Parameters:
        bytes - a ByteBuffer value
        Returns:
        the number of bytes written as an int
      • peek

        public java.nio.ByteBuffer peek​(int size)
        Description copied from class: BufferedIOBase
        Returns buffered bytes without advancing the position. The argument indicates a desired minimal number of bytes; we do at most one raw read to satisfy it. We never return more than the size of the underlying buffer;
        Overrides:
        peek in class BufferedIOBase
        Parameters:
        size - the minimal number of bytes as an int
        Returns:
        a ByteBuffer containing the bytes read
      • read1

        public int read1​(java.nio.ByteBuffer bytes)
        Description copied from class: BufferedIOBase
        Reads up to bytes.remaining() bytes. Returns up to bytes.remaining() bytes. If at least one byte is buffered, we only return buffered bytes. Otherwise, we do one raw read.
        Overrides:
        read1 in class BufferedIOBase
        Parameters:
        bytes - a ByteBuffer to read bytes into
        Returns:
        the amount of data read as an int
      • flush

        public void flush()
        Description copied from class: IOBase
        Flushes write buffers, if applicable. This is a no-op for read-only and non-blocking streams.
        Overrides:
        flush in class BufferedIOMixin