Class BufferedRandomAccessFile

java.lang.Object
host.anzo.commons.io.binary.BufferedRandomAccessFile
All Implemented Interfaces:
DataInput, DataOutput

public class BufferedRandomAccessFile extends Object implements DataInput, DataOutput
A buffered drop-in replacement for java.io.RandomAccessFile. Instances of this class realise substantial speed increases over java.io.RandomAccessFile through the use of buffering. This is a subclass of Object, as it was not possible to subclass java.io.RandomAccessFile because many of the methods are final. However, if it is necessary to use RandomAccessFile and java.io.RandomAccessFile interchangeably, both classes implement the DataInput and DataOutput interfaces.

By Russ Rew, based on BufferedRandomAccessFile by Alex McManus, based on Sun's source code for java.io.RandomAccessFile. For Alex McManus version from which this derives, see his Freeware Java Classes.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static Set<String>
     
    static final int
     
    protected boolean
    The current endian (big or little) mode of the file.
    protected byte[]
    The buffer used for reading the data.
    protected long
    The offset in bytes of the start of the buffer, from the start of the file.
    protected long
    The offset in bytes of the end of the data in the buffer, from the start of the file.
    protected int
    The size of the data stored in the buffer, in bytes.
    protected static final int
    The default buffer size, in bytes.
    protected boolean
    True if we are at the end of the file.
    The underlying java.io.RandomAccessFile.
    protected FileChannel
     
    protected long
    The offset in bytes from the file start, of the next read or write operation.
    static final int
     
    protected String
    File location
    protected static List<String>
    List of open files.
    Debugging, don't use.
    protected boolean
    The access mode of the file.
    protected static boolean
     
    protected static boolean
     
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    BufferedRandomAccessFile(int bufferSize)
    Constructor, for subclasses
     
    Constructor, default buffer size.
     
    BufferedRandomAccessFile(String location, String mode, int bufferSize)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Close the file, and release any associated system resources.
    void
    Copy the contents of the buffer to the disk.
    static @Nullable List<String>
     
    int
    Get the buffer size
    Returns the opaque file descriptor object associated with this file.
    long
    Returns the current position in the file, where the next read or write will occur.
    Get the file location, or name.
    Allow access to the underlying java.io.RandomAccessFile.
    boolean
    Return true if file pointer is at end of file.
    long
    Get the length of the file.
    void
    order(int endian)
    Change the current endian mode.
    int
    Read a byte of data from the file, blocking until data is available.
    int
    read(byte[] b)
    Read up to b.length( ) bytes into an array.
    int
    read(byte[] b, int off, int len)
    Read up to len bytes into an array, at a specified offset.
    protected int
    read_(long pos, byte[] b, int offset, int len)
    Read directly from file, without going through the buffer.
    final boolean
    Reads a boolean from this file.
    protected void
    readBuffer(long pos)
     
    final byte
    Reads a signed 8-bit value from this file.
    protected int
    readBytes(byte[] b, int off, int len)
    Read up to len bytes into an array, at a specified offset.
    byte[]
    readBytes(int count)
    Read fully count number of bytes
    final char
    Reads a Unicode character from this file.
    final double
    Reads a double from this file.
    final void
    readDouble(double[] pa, int start, int n)
    Read an array of doubles
    final float
    Reads a float from this file.
    final void
    readFloat(float[] pa, int start, int n)
    Read an array of floats
    final void
    readFully(byte[] b)
    Reads b.length bytes from this file into the byte array.
    final void
    readFully(byte[] b, int off, int len)
    Reads exactly len bytes from this file into the byte array.
    final int
    Reads a signed 32-bit integer from this file.
    final void
    readInt(int[] pa, int start, int n)
    Read an array of ints
    final int
    Read an integer at the given position, bypassing all buffering.
    final String
    Reads the next line of text from this file.
    final long
    Reads a signed 64-bit integer from this file.
    final void
    readLong(long[] pa, int start, int n)
    Read an array of longs
    final short
    Reads a signed 16-bit number from this file.
    final void
    readShort(short[] pa, int start, int n)
    Read an array of shorts
    readString(int nbytes)
    Read a String of knoen length.
    long
    readToByteChannel(WritableByteChannel dest, long offset, long nbytes)
    Read nbytes bytes, at the specified file offset, send to a WritableByteChannel.
    final int
    Reads an unsigned 8-bit number from this file.
    final int
    Reads an unsigned 16-bit number from this file.
    final String
    Reads in a string from this file.
    void
    seek(long pos)
    Set the position in the file for the next read or write.
    void
    setBufferSize(int bufferSize)
    Set the buffer size.
    void
    Set extendMode for truncated, yet valid files - old NetCDF code allowed this when NOFILL on, and user doesnt write all variables.
    void
    setMinLength(long minLength)
    Make sure file is at least this long when its closed.
    int
    skipBytes(int n)
    Skips exactly n bytes of input.
    Create a string representation of this object.
    void
    Unread the last byte read.
    void
    write(byte[] b)
    Writes b.length bytes from the specified byte array starting at offset off to this file.
    void
    write(byte[] b, int off, int len)
    Writes len bytes from the specified byte array starting at offset off to this file.
    void
    write(int b)
    Write a byte to the file.
    final void
    writeBoolean(boolean v)
    Writes a boolean to the file as a 1-byte value.
    final void
    writeBoolean(boolean[] pa, int start, int n)
    Write an array of booleans
    final void
    writeByte(int v)
    Writes a byte to the file as a 1-byte value.
    void
    writeBytes(byte[] b, int off, int len)
    Write len bytes from an array to the file.
    final void
    writeBytes(char[] b, int off, int len)
    Writes the character array to the file as a sequence of bytes.
    final void
    Writes the string to the file as a sequence of bytes.
    final void
    writeChar(char[] pa, int start, int n)
    Write an array of chars
    final void
    writeChar(int v)
    Writes a char to the file as a 2-byte value, high byte first.
    final void
    Writes a string to the file as a sequence of characters.
    final void
    writeDouble(double v)
    Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the file as an 8-byte quantity, high byte first.
    final void
    writeDouble(double[] pa, int start, int n)
    Write an array of doubles
    final void
    writeFloat(float v)
    Converts the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the file as a 4-byte quantity, high byte first.
    final void
    writeFloat(float[] pa, int start, int n)
    Write an array of floats
    final void
    writeInt(int v)
    Writes an int to the file as four bytes, high byte first.
    final void
    writeInt(int[] pa, int start, int n)
    Write an array of ints
    final void
    writeLong(long v)
    Writes a long to the file as eight bytes, high byte first.
    final void
    writeLong(long[] pa, int start, int n)
    Write an array of longs
    final void
    writeShort(int v)
    Writes a short to the file as two bytes, high byte first.
    final void
    writeShort(short[] pa, int start, int n)
    Write an array of shorts
    final void
    Writes a string to the file using UTF-8 encoding in a machine-independent manner.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • BIG_ENDIAN

      public static final int BIG_ENDIAN
      See Also:
    • LITTLE_ENDIAN

      public static final int LITTLE_ENDIAN
      See Also:
    • allFiles

      protected static Set<String> allFiles
    • openFiles

      protected static List<String> openFiles
      List of open files.
      Debugging, don't use.
    • showOpen

      protected static boolean showOpen
    • showRead

      protected static boolean showRead
    • defaultBufferSize

      protected static final int defaultBufferSize
      The default buffer size, in bytes.
      See Also:
    • location

      protected String location
      File location
    • file

      protected RandomAccessFile file
      The underlying java.io.RandomAccessFile.
    • fileChannel

      protected FileChannel fileChannel
    • filePosition

      protected long filePosition
      The offset in bytes from the file start, of the next read or write operation.
    • buffer

      protected byte[] buffer
      The buffer used for reading the data.
    • bufferStart

      protected long bufferStart
      The offset in bytes of the start of the buffer, from the start of the file.
    • dataEnd

      protected long dataEnd
      The offset in bytes of the end of the data in the buffer, from the start of the file. This can be calculated from bufferStart + dataSize, but it is cached to speed up the read( ) method.
    • dataSize

      protected int dataSize
      The size of the data stored in the buffer, in bytes. This may be less than the size of the buffer.
    • endOfFile

      protected boolean endOfFile
      True if we are at the end of the file.
    • readonly

      protected boolean readonly
      The access mode of the file.
    • bigEndian

      protected boolean bigEndian
      The current endian (big or little) mode of the file.
  • Constructor Details

    • BufferedRandomAccessFile

      protected BufferedRandomAccessFile(int bufferSize)
      Constructor, for subclasses
      Parameters:
      bufferSize - size of read buffer
    • BufferedRandomAccessFile

      public BufferedRandomAccessFile(String location, String mode) throws IOException
      Constructor, default buffer size.
      Parameters:
      location - location of the file
      mode - same as for java.io.RandomAccessFile
      Throws:
      IOException - on open error
    • BufferedRandomAccessFile

      public BufferedRandomAccessFile(String location, String mode, int bufferSize) throws IOException
      Constructor.
      Parameters:
      location - location of the file
      mode - same as for java.io.RandomAccessFile
      bufferSize - size of buffer to use.
      Throws:
      IOException - on open error
  • Method Details

    • getAllFiles

      @Nullable public static @Nullable List<String> getAllFiles()
    • getRandomAccessFile

      public RandomAccessFile getRandomAccessFile()
      Allow access to the underlying java.io.RandomAccessFile. WARNING! BROKEN ENCAPSOLATION, DO NOT USE. May change implementation in the future.
      Returns:
      the underlying java.io.RandomAccessFile.
    • setBufferSize

      public void setBufferSize(int bufferSize)
      Set the buffer size. If writing, call flush() first.
      Parameters:
      bufferSize - length in bytes
    • getBufferSize

      public int getBufferSize()
      Get the buffer size
      Returns:
      bufferSize length in bytes
    • close

      public void close() throws IOException
      Close the file, and release any associated system resources.
      Throws:
      IOException - if an I/O error occurrs.
    • isAtEndOfFile

      public boolean isAtEndOfFile()
      Return true if file pointer is at end of file.
      Returns:
      true if file pointer is at end of file
    • seek

      public void seek(long pos) throws IOException
      Set the position in the file for the next read or write.
      Parameters:
      pos - the offset (in bytes) from the start of the file.
      Throws:
      IOException - if an I/O error occurrs.
    • readBuffer

      protected void readBuffer(long pos) throws IOException
      Throws:
      IOException
    • getFilePointer

      public long getFilePointer() throws IOException
      Returns the current position in the file, where the next read or write will occur.
      Returns:
      the offset from the start of the file in bytes.
      Throws:
      IOException - if an I/O error occurrs.
    • getLocation

      public String getLocation()
      Get the file location, or name.
      Returns:
      file location
    • length

      public long length() throws IOException
      Get the length of the file. The data in the buffer (which may not have been written the disk yet) is taken into account.
      Returns:
      the length of the file in bytes.
      Throws:
      IOException - if an I/O error occurrs.
    • order

      public void order(int endian)
      Change the current endian mode. Subsequent reads of short, int, float, double, long, char will use this. Does not currently affect writes. Default values is BIG_ENDIAN.
      Parameters:
      endian - RandomAccessFile.BIG_ENDIAN or RandomAccessFile.LITTLE_ENDIAN
    • getFD

      public FileDescriptor getFD() throws IOException
      Returns the opaque file descriptor object associated with this file.
      Returns:
      the file descriptor object associated with this file.
      Throws:
      IOException - if an I/O error occurs.
    • flush

      public void flush() throws IOException
      Copy the contents of the buffer to the disk.
      Throws:
      IOException - if an I/O error occurs.
    • setMinLength

      public void setMinLength(long minLength)
      Make sure file is at least this long when its closed. needed when not using fill mode, and not all data is written.
      Parameters:
      minLength - minimum length of the file.
    • setExtendMode

      public void setExtendMode()
      Set extendMode for truncated, yet valid files - old NetCDF code allowed this when NOFILL on, and user doesnt write all variables.
    • read

      public int read() throws IOException
      Read a byte of data from the file, blocking until data is available.
      Returns:
      the next byte of data, or -1 if the end of the file is reached.
      Throws:
      IOException - if an I/O error occurrs.
    • readBytes

      protected int readBytes(byte[] b, int off, int len) throws IOException
      Read up to len bytes into an array, at a specified offset. This will block until at least one byte has been read.
      Parameters:
      b - the byte array to receive the bytes.
      off - the offset in the array where copying will start.
      len - the number of bytes to copy.
      Returns:
      the actual number of bytes read, or -1 if there is not more data due to the end of the file being reached.
      Throws:
      IOException - if an I/O error occurrs.
    • readToByteChannel

      public long readToByteChannel(WritableByteChannel dest, long offset, long nbytes) throws IOException
      Read nbytes bytes, at the specified file offset, send to a WritableByteChannel. This will block until all bytes are read. This uses the underlying file channel directly, bypassing all user buffers.
      Parameters:
      dest - write to this WritableByteChannel.
      offset - the offset in the file where copying will start.
      nbytes - the number of bytes to read.
      Returns:
      the actual number of bytes read and transfered
      Throws:
      IOException - if an I/O error occurs.
    • read_

      protected int read_(long pos, byte[] b, int offset, int len) throws IOException
      Read directly from file, without going through the buffer. All reading goes through here or readToByteChannel;
      Parameters:
      pos - start here in the file
      b - put data into this buffer
      offset - buffer offset
      len - this number of bytes
      Returns:
      actual number of bytes read
      Throws:
      IOException - on io error
    • read

      public int read(byte[] b, int off, int len) throws IOException
      Read up to len bytes into an array, at a specified offset. This will block until at least one byte has been read.
      Parameters:
      b - the byte array to receive the bytes.
      off - the offset in the array where copying will start.
      len - the number of bytes to copy.
      Returns:
      the actual number of bytes read, or -1 if there is not more data due to the end of the file being reached.
      Throws:
      IOException - if an I/O error occurrs.
    • read

      public int read(byte[] b) throws IOException
      Read up to b.length( ) bytes into an array. This will block until at least one byte has been read.
      Parameters:
      b - the byte array to receive the bytes.
      Returns:
      the actual number of bytes read, or -1 if there is not more data due to the end of the file being reached.
      Throws:
      IOException - if an I/O error occurrs.
    • readBytes

      public byte[] readBytes(int count) throws IOException
      Read fully count number of bytes
      Parameters:
      count - how many bytes tp read
      Returns:
      a byte array of length count, fully read in
      Throws:
      IOException - if an I/O error occurrs.
    • readFully

      public final void readFully(byte[] b) throws IOException
      Reads b.length bytes from this file into the byte array. This method reads repeatedly from the file until all the bytes are read. This method blocks until all the bytes are read, the end of the stream is detected, or an exception is thrown.
      Specified by:
      readFully in interface DataInput
      Parameters:
      b - the buffer into which the data is read.
      Throws:
      EOFException - if this file reaches the end before reading all the bytes.
      IOException - if an I/O error occurs.
    • readFully

      public final void readFully(byte[] b, int off, int len) throws IOException
      Reads exactly len bytes from this file into the byte array. This method reads repeatedly from the file until all the bytes are read. This method blocks until all the bytes are read, the end of the stream is detected, or an exception is thrown.
      Specified by:
      readFully in interface DataInput
      Parameters:
      b - the buffer into which the data is read.
      off - the start offset of the data.
      len - the number of bytes to read.
      Throws:
      EOFException - if this file reaches the end before reading all the bytes.
      IOException - if an I/O error occurs.
    • skipBytes

      public int skipBytes(int n) throws IOException
      Skips exactly n bytes of input. This method blocks until all the bytes are skipped, the end of the stream is detected, or an exception is thrown.
      Specified by:
      skipBytes in interface DataInput
      Parameters:
      n - the number of bytes to be skipped.
      Returns:
      the number of bytes skipped, which is always n.
      Throws:
      EOFException - if this file reaches the end before skipping all the bytes.
      IOException - if an I/O error occurs.
    • unread

      public void unread()
      Unread the last byte read. This method should not be used more than once between reading operations, or strange things might happen.
    • write

      public void write(int b) throws IOException
      Write a byte to the file. If the file has not been opened for writing, an IOException will be raised only when an attempt is made to write the buffer to the file.

      Caveat: the effects of seek( )ing beyond the end of the file are undefined.

      Specified by:
      write in interface DataOutput
      Parameters:
      b - write this byte
      Throws:
      IOException - if an I/O error occurrs.
    • writeBytes

      public void writeBytes(byte[] b, int off, int len) throws IOException
      Write len bytes from an array to the file.
      Parameters:
      b - the array containing the data.
      off - the offset in the array to the data.
      len - the length of the data.
      Throws:
      IOException - if an I/O error occurrs.
    • write

      public void write(byte[] b) throws IOException
      Writes b.length bytes from the specified byte array starting at offset off to this file.
      Specified by:
      write in interface DataOutput
      Parameters:
      b - the data.
      Throws:
      IOException - if an I/O error occurs.
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Writes len bytes from the specified byte array starting at offset off to this file.
      Specified by:
      write in interface DataOutput
      Parameters:
      b - the data.
      off - the start offset in the data.
      len - the number of bytes to write.
      Throws:
      IOException - if an I/O error occurs.
    • readBoolean

      public final boolean readBoolean() throws IOException
      Reads a boolean from this file. This method reads a single byte from the file. A value of 0 represents false. Any other value represents true. This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.
      Specified by:
      readBoolean in interface DataInput
      Returns:
      the boolean value read.
      Throws:
      EOFException - if this file has reached the end.
      IOException - if an I/O error occurs.
    • readByte

      public final byte readByte() throws IOException
      Reads a signed 8-bit value from this file. This method reads a byte from the file. If the byte read is b, where 0 <= b <= 255, then the result is: (byte)(b)

      This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readByte in interface DataInput
      Returns:
      the next byte of this file as a signed 8-bit byte.
      Throws:
      EOFException - if this file has reached the end.
      IOException - if an I/O error occurs.
    • readUnsignedByte

      public final int readUnsignedByte() throws IOException
      Reads an unsigned 8-bit number from this file. This method reads a byte from this file and returns that byte.

      This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readUnsignedByte in interface DataInput
      Returns:
      the next byte of this file, interpreted as an unsigned 8-bit number.
      Throws:
      EOFException - if this file has reached the end.
      IOException - if an I/O error occurs.
    • readShort

      public final short readShort() throws IOException
      Reads a signed 16-bit number from this file. The method reads 2 bytes from this file. If the two bytes read, in order, are b1 and b2, where each of the two values is between 0 and 255, inclusive, then the result is equal to: (short)((b1 << 8) | b2)

      This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readShort in interface DataInput
      Returns:
      the next two bytes of this file, interpreted as a signed 16-bit number.
      Throws:
      EOFException - if this file reaches the end before reading two bytes.
      IOException - if an I/O error occurs.
    • readShort

      public final void readShort(short[] pa, int start, int n) throws IOException
      Read an array of shorts
      Parameters:
      pa - read into this array
      start - starting at pa[start]
      n - read this many elements
      Throws:
      IOException - on read error
    • readUnsignedShort

      public final int readUnsignedShort() throws IOException
      Reads an unsigned 16-bit number from this file. This method reads two bytes from the file. If the bytes read, in order, are b1 and b2, where 0 <= b1, b2 <= 255, then the result is equal to: (b1 << 8) | b2

      This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readUnsignedShort in interface DataInput
      Returns:
      the next two bytes of this file, interpreted as an unsigned 16-bit integer.
      Throws:
      EOFException - if this file reaches the end before reading two bytes.
      IOException - if an I/O error occurs.
    • readChar

      public final char readChar() throws IOException
      Reads a Unicode character from this file. This method reads two bytes from the file. If the bytes read, in order, are b1 and b2, where 0 <= b1, b2 <= 255, then the result is equal to: (char)((b1 << 8) | b2)

      This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readChar in interface DataInput
      Returns:
      the next two bytes of this file as a Unicode character.
      Throws:
      EOFException - if this file reaches the end before reading two bytes.
      IOException - if an I/O error occurs.
    • readInt

      public final int readInt() throws IOException
      Reads a signed 32-bit integer from this file. This method reads 4 bytes from the file. If the bytes read, in order, are b1, b2, b3, and b4, where 0 <= b1, b2, b3, b4 <= 255, then the result is equal to: (b1 << 24) | (b2 << 16) + (b3 << 8) + b4

      This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readInt in interface DataInput
      Returns:
      the next four bytes of this file, interpreted as an int.
      Throws:
      EOFException - if this file reaches the end before reading four bytes.
      IOException - if an I/O error occurs.
    • readIntUnbuffered

      public final int readIntUnbuffered(long pos) throws IOException
      Read an integer at the given position, bypassing all buffering.
      Parameters:
      pos - read a byte at this position
      Returns:
      The int that was read
      Throws:
      IOException - if an I/O error occurs.
    • readInt

      public final void readInt(int[] pa, int start, int n) throws IOException
      Read an array of ints
      Parameters:
      pa - read into this array
      start - starting at pa[start]
      n - read this many elements
      Throws:
      IOException - on read error
    • readLong

      public final long readLong() throws IOException
      Reads a signed 64-bit integer from this file. This method reads eight bytes from the file. If the bytes read, in order, are b1, b2, b3, b4, b5, b6, b7, and b8, where: 0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,

      then the result is equal to:

           ((long)b1 << 56) + ((long)b2 << 48)
           + ((long)b3 << 40) + ((long)b4 << 32)
           + ((long)b5 << 24) + ((long)b6 << 16)
           + ((long)b7 << 8) + b8
       

      This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readLong in interface DataInput
      Returns:
      the next eight bytes of this file, interpreted as a long.
      Throws:
      EOFException - if this file reaches the end before reading eight bytes.
      IOException - if an I/O error occurs.
    • readLong

      public final void readLong(long[] pa, int start, int n) throws IOException
      Read an array of longs
      Parameters:
      pa - read into this array
      start - starting at pa[start]
      n - read this many elements
      Throws:
      IOException - on read error
    • readFloat

      public final float readFloat() throws IOException
      Reads a float from this file. This method reads an int value as if by the readInt method and then converts that int to a float using the intBitsToFloat method in class Float.

      This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readFloat in interface DataInput
      Returns:
      the next four bytes of this file, interpreted as a float.
      Throws:
      EOFException - if this file reaches the end before reading four bytes.
      IOException - if an I/O error occurs.
      See Also:
    • readFloat

      public final void readFloat(float[] pa, int start, int n) throws IOException
      Read an array of floats
      Parameters:
      pa - read into this array
      start - starting at pa[start]
      n - read this many elements
      Throws:
      IOException - on read error
    • readDouble

      public final double readDouble() throws IOException
      Reads a double from this file. This method reads a long value as if by the readLong method and then converts that long to a double using the longBitsToDouble method in class Double.

      This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readDouble in interface DataInput
      Returns:
      the next eight bytes of this file, interpreted as a double.
      Throws:
      EOFException - if this file reaches the end before reading eight bytes.
      IOException - if an I/O error occurs.
      See Also:
    • readDouble

      public final void readDouble(double[] pa, int start, int n) throws IOException
      Read an array of doubles
      Parameters:
      pa - read into this array
      start - starting at pa[start]
      n - read this many elements
      Throws:
      IOException - on read error
    • readLine

      public final String readLine() throws IOException
      Reads the next line of text from this file. This method successively reads bytes from the file until it reaches the end of a line of text.

      A line of text is terminated by a carriage-return character ('\r'), a newline character ('\n'), a carriage-return character immediately followed by a newline character, or the end of the input stream. The line-terminating character(s), if any, are included as part of the string returned.

      This method blocks until a newline character is read, a carriage return and the byte following it are read (to see if it is a newline), the end of the stream is detected, or an exception is thrown.

      Specified by:
      readLine in interface DataInput
      Returns:
      the next line of text from this file.
      Throws:
      IOException - if an I/O error occurs.
    • readUTF

      public final String readUTF() throws IOException
      Reads in a string from this file. The string has been encoded using a modified UTF-8 format.

      The first two bytes are read as if by readUnsignedShort. This value gives the number of following bytes that are in the encoded string, not the length of the resulting string. The following bytes are then interpreted as bytes encoding characters in the UTF-8 format and are converted into characters.

      This method blocks until all the bytes are read, the end of the stream is detected, or an exception is thrown.

      Specified by:
      readUTF in interface DataInput
      Returns:
      a Unicode string.
      Throws:
      EOFException - if this file reaches the end before reading all the bytes.
      IOException - if an I/O error occurs.
      UTFDataFormatException - if the bytes do not represent valid UTF-8 encoding of a Unicode string.
      See Also:
    • readString

      public String readString(int nbytes) throws IOException
      Read a String of knoen length.
      Parameters:
      nbytes - number of bytes to read
      Returns:
      String wrapping the bytes.
      Throws:
      IOException - if an I/O error occurs.
    • writeBoolean

      public final void writeBoolean(boolean v) throws IOException
      Writes a boolean to the file as a 1-byte value. The value true is written out as the value (byte)1; the value false is written out as the value (byte)0.
      Specified by:
      writeBoolean in interface DataOutput
      Parameters:
      v - a boolean value to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeBoolean

      public final void writeBoolean(boolean[] pa, int start, int n) throws IOException
      Write an array of booleans
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - write this number of elements
      Throws:
      IOException - on read error
    • writeByte

      public final void writeByte(int v) throws IOException
      Writes a byte to the file as a 1-byte value.
      Specified by:
      writeByte in interface DataOutput
      Parameters:
      v - a byte value to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeShort

      public final void writeShort(int v) throws IOException
      Writes a short to the file as two bytes, high byte first.
      Specified by:
      writeShort in interface DataOutput
      Parameters:
      v - a short to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeShort

      public final void writeShort(short[] pa, int start, int n) throws IOException
      Write an array of shorts
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - this number of elements
      Throws:
      IOException - on read error
    • writeChar

      public final void writeChar(int v) throws IOException
      Writes a char to the file as a 2-byte value, high byte first.
      Specified by:
      writeChar in interface DataOutput
      Parameters:
      v - a char value to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeChar

      public final void writeChar(char[] pa, int start, int n) throws IOException
      Write an array of chars
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - this number of elements
      Throws:
      IOException - on read error
    • writeInt

      public final void writeInt(int v) throws IOException
      Writes an int to the file as four bytes, high byte first.
      Specified by:
      writeInt in interface DataOutput
      Parameters:
      v - an int to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeInt

      public final void writeInt(int[] pa, int start, int n) throws IOException
      Write an array of ints
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - write this number of elements
      Throws:
      IOException - on read error
    • writeLong

      public final void writeLong(long v) throws IOException
      Writes a long to the file as eight bytes, high byte first.
      Specified by:
      writeLong in interface DataOutput
      Parameters:
      v - a long to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeLong

      public final void writeLong(long[] pa, int start, int n) throws IOException
      Write an array of longs
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - write this number of elements
      Throws:
      IOException - on read error
    • writeFloat

      public final void writeFloat(float v) throws IOException
      Converts the float argument to an int using the floatToIntBits method in class Float, and then writes that int value to the file as a 4-byte quantity, high byte first.
      Specified by:
      writeFloat in interface DataOutput
      Parameters:
      v - a float value to be written.
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • writeFloat

      public final void writeFloat(float[] pa, int start, int n) throws IOException
      Write an array of floats
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - write this number of elements
      Throws:
      IOException - on read error
    • writeDouble

      public final void writeDouble(double v) throws IOException
      Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the file as an 8-byte quantity, high byte first.
      Specified by:
      writeDouble in interface DataOutput
      Parameters:
      v - a double value to be written.
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • writeDouble

      public final void writeDouble(double[] pa, int start, int n) throws IOException
      Write an array of doubles
      Parameters:
      pa - write from this array
      start - starting with this element in the array
      n - write this number of elements
      Throws:
      IOException - on read error
    • writeBytes

      public final void writeBytes(String s) throws IOException
      Writes the string to the file as a sequence of bytes. Each character in the string is written out, in sequence, by discarding its high eight bits.
      Specified by:
      writeBytes in interface DataOutput
      Parameters:
      s - a string of bytes to be written.
      Throws:
      IOException - if an I/O error occurs.
    • writeBytes

      public final void writeBytes(char[] b, int off, int len) throws IOException
      Writes the character array to the file as a sequence of bytes. Each character in the string is written out, in sequence, by discarding its high eight bits.
      Parameters:
      b - a character array of bytes to be written.
      off - the index of the first character to write.
      len - the number of characters to write.
      Throws:
      IOException - if an I/O error occurs.
    • writeChars

      public final void writeChars(String s) throws IOException
      Writes a string to the file as a sequence of characters. Each character is written to the data output stream as if by the writeChar method.
      Specified by:
      writeChars in interface DataOutput
      Parameters:
      s - a String value to be written.
      Throws:
      IOException - if an I/O error occurs.
      See Also:
    • writeUTF

      public final void writeUTF(String str) throws IOException
      Writes a string to the file using UTF-8 encoding in a machine-independent manner.

      First, two bytes are written to the file as if by the writeShort method giving the number of bytes to follow. This value is the number of bytes actually written out, not the length of the string. Following the length, each character of the string is output, in sequence, using the UTF-8 encoding for each character.

      Specified by:
      writeUTF in interface DataOutput
      Parameters:
      str - a string to be written.
      Throws:
      IOException - if an I/O error occurs.
    • toString

      public String toString()
      Create a string representation of this object.
      Overrides:
      toString in class Object
      Returns:
      a string representation of the state of the object.