ucar.unidata.io
Class RandomAccessFile

java.lang.Object
  extended by ucar.unidata.io.RandomAccessFile
All Implemented Interfaces:
java.io.DataInput, java.io.DataOutput
Direct Known Subclasses:
InMemoryRandomAccessFile

@NotThreadSafe
public class RandomAccessFile
extends java.lang.Object
implements java.io.DataInput, java.io.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.

Author:
Alex McManus, Russ Rew, john caron
See Also:
DataInput, DataOutput, RandomAccessFile

Field Summary
static int BIG_ENDIAN
           
static int LITTLE_ENDIAN
           
 
Constructor Summary
RandomAccessFile(java.lang.String location, java.lang.String mode)
          Constructor, default buffer size.
RandomAccessFile(java.lang.String location, java.lang.String mode, int bufferSize)
          Constructor.
 
Method Summary
 void close()
          Close the file, and release any associated system resources.
 void flush()
          Copy the contents of the buffer to the disk.
 int getBufferSize()
          Get the buffer size
static boolean getDebugLeaks()
          Debugging, do not use.
 java.io.FileDescriptor getFD()
          Returns the opaque file descriptor object associated with this file.
 long getFilePointer()
          Returns the current position in the file, where the next read or write will occur.
 java.lang.String getLocation()
          Get the file location, or name.
static java.util.List<java.lang.String> getOpenFiles()
          Debugging, do not use.
 java.io.RandomAccessFile getRandomAccessFile()
          Allow access to the underlying java.io.RandomAccessFile.
 boolean isAtEndOfFile()
          Return true if file pointer is at end of file.
 long length()
          Get the length of the file.
 void order(int endian)
          Change the current endian mode.
 int read()
          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.
 boolean readBoolean()
          Reads a boolean from this file.
 byte readByte()
          Reads a signed 8-bit value from this file.
 byte[] readBytes(int count)
          Read fully count number of bytes
 char readChar()
          Reads a Unicode character from this file.
 double readDouble()
          Reads a double from this file.
 void readDouble(double[] pa, int start, int n)
          Read an array of doubles
 float readFloat()
          Reads a float from this file.
 void readFloat(float[] pa, int start, int n)
          Read an array of floats
 void readFully(byte[] b)
          Reads b.length bytes from this file into the byte array.
 void readFully(byte[] b, int off, int len)
          Reads exactly len bytes from this file into the byte array.
 int readInt()
          Reads a signed 32-bit integer from this file.
 void readInt(int[] pa, int start, int n)
          Read an array of ints
 int readIntUnbuffered(long pos)
          Read an integer at the given position, bypassing all buffering.
 java.lang.String readLine()
          Reads the next line of text from this file.
 long readLong()
          Reads a signed 64-bit integer from this file.
 void readLong(long[] pa, int start, int n)
          Read an array of longs
 short readShort()
          Reads a signed 16-bit number from this file.
 void readShort(short[] pa, int start, int n)
          Read an array of shorts
 java.lang.String readString(int nbytes)
          Read a String of knoen length.
 long readToByteChannel(java.nio.channels.WritableByteChannel dest, long offset, long nbytes)
          Read nbytes bytes, at the specified file offset, send to a WritableByteChannel.
 int readUnsignedByte()
          Reads an unsigned 8-bit number from this file.
 int readUnsignedShort()
          Reads an unsigned 16-bit number from this file.
 java.lang.String readUTF()
          Reads in a string from this file.
 boolean searchForward(KMPMatch match, int maxBytes)
          Search forward from the current pos, looking for a match.
 void seek(long pos)
          Set the position in the file for the next read or write.
 void setBufferSize(int bufferSize)
          Set the buffer size.
static void setDebugAccess(boolean b)
          Debugging, do not use.
static void setDebugLeaks(boolean b)
          Debugging, do not use.
 void setExtendMode()
          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.
 java.lang.String toString()
          Create a string representation of this object.
 void unread()
          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.
 void writeBoolean(boolean v)
          Writes a boolean to the file as a 1-byte value.
 void writeBoolean(boolean[] pa, int start, int n)
          Write an array of booleans
 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.
 void writeBytes(char[] b, int off, int len)
          Writes the character array to the file as a sequence of bytes.
 void writeBytes(java.lang.String s)
          Writes the string to the file as a sequence of bytes.
 void writeChar(char[] pa, int start, int n)
          Write an array of chars
 void writeChar(int v)
          Writes a char to the file as a 2-byte value, high byte first.
 void writeChars(java.lang.String s)
          Writes a string to the file as a sequence of characters.
 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.
 void writeDouble(double[] pa, int start, int n)
          Write an array of doubles
 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.
 void writeFloat(float[] pa, int start, int n)
          Write an array of floats
 void writeInt(int v)
          Writes an int to the file as four bytes, high byte first.
 void writeInt(int[] pa, int start, int n)
          Write an array of ints
 void writeLong(long v)
          Writes a long to the file as eight bytes, high byte first.
 void writeLong(long[] pa, int start, int n)
          Write an array of longs
 void writeShort(int v)
          Writes a short to the file as two bytes, high byte first.
 void writeShort(short[] pa, int start, int n)
          Write an array of shorts
 void writeUTF(java.lang.String str)
          Writes a string to the file using UTF-8 encoding in a machine-independent manner.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BIG_ENDIAN

public static final int BIG_ENDIAN
See Also:
Constant Field Values

LITTLE_ENDIAN

public static final int LITTLE_ENDIAN
See Also:
Constant Field Values
Constructor Detail

RandomAccessFile

public RandomAccessFile(java.lang.String location,
                        java.lang.String mode)
                 throws java.io.IOException
Constructor, default buffer size.

Parameters:
location - location of the file
mode - same as for java.io.RandomAccessFile
Throws:
java.io.IOException - on open error

RandomAccessFile

public RandomAccessFile(java.lang.String location,
                        java.lang.String mode,
                        int bufferSize)
                 throws java.io.IOException
Constructor.

Parameters:
location - location of the file
mode - same as for java.io.RandomAccessFile
bufferSize - size of buffer to use.
Throws:
java.io.IOException - on open error
Method Detail

getDebugLeaks

public static boolean getDebugLeaks()
Debugging, do not use.

Returns:
true if debugLeaks is on

setDebugLeaks

public static void setDebugLeaks(boolean b)
Debugging, do not use.

Parameters:
b - set true to track java.io.RandomAccessFile

setDebugAccess

public static void setDebugAccess(boolean b)
Debugging, do not use.

Parameters:
b - to debug file reading

getOpenFiles

public static java.util.List<java.lang.String> getOpenFiles()
Debugging, do not use.

Returns:
list of open files.

getRandomAccessFile

public java.io.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 java.io.IOException
Close the file, and release any associated system resources.

Throws:
java.io.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 java.io.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:
java.io.IOException - if an I/O error occurrs.

getFilePointer

public long getFilePointer()
                    throws java.io.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:
java.io.IOException - if an I/O error occurrs.

getLocation

public java.lang.String getLocation()
Get the file location, or name.

Returns:
file location

length

public long length()
            throws java.io.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:
java.io.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 java.io.FileDescriptor getFD()
                             throws java.io.IOException
Returns the opaque file descriptor object associated with this file.

Returns:
the file descriptor object associated with this file.
Throws:
java.io.IOException - if an I/O error occurs.

flush

public void flush()
           throws java.io.IOException
Copy the contents of the buffer to the disk.

Throws:
java.io.IOException - if an I/O error occurrs.

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 java.io.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:
java.io.IOException - if an I/O error occurrs.

readToByteChannel

public long readToByteChannel(java.nio.channels.WritableByteChannel dest,
                              long offset,
                              long nbytes)
                       throws java.io.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:
java.io.IOException - if an I/O error occurs.

read

public int read(byte[] b,
                int off,
                int len)
         throws java.io.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:
java.io.IOException - if an I/O error occurrs.

read

public int read(byte[] b)
         throws java.io.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:
java.io.IOException - if an I/O error occurrs.

readBytes

public byte[] readBytes(int count)
                 throws java.io.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:
java.io.IOException - if an I/O error occurrs.

readFully

public final void readFully(byte[] b)
                     throws java.io.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 java.io.DataInput
Parameters:
b - the buffer into which the data is read.
Throws:
java.io.EOFException - if this file reaches the end before reading all the bytes.
java.io.IOException - if an I/O error occurs.

readFully

public final void readFully(byte[] b,
                            int off,
                            int len)
                     throws java.io.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 java.io.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:
java.io.EOFException - if this file reaches the end before reading all the bytes.
java.io.IOException - if an I/O error occurs.

skipBytes

public int skipBytes(int n)
              throws java.io.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 java.io.DataInput
Parameters:
n - the number of bytes to be skipped.
Returns:
the number of bytes skipped, which is always n.
Throws:
java.io.EOFException - if this file reaches the end before skipping all the bytes.
java.io.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 java.io.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 java.io.DataOutput
Parameters:
b - write this byte
Throws:
java.io.IOException - if an I/O error occurrs.

writeBytes

public void writeBytes(byte[] b,
                       int off,
                       int len)
                throws java.io.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:
java.io.IOException - if an I/O error occurrs.

write

public void write(byte[] b)
           throws java.io.IOException
Writes b.length bytes from the specified byte array starting at offset off to this file.

Specified by:
write in interface java.io.DataOutput
Parameters:
b - the data.
Throws:
java.io.IOException - if an I/O error occurs.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Writes len bytes from the specified byte array starting at offset off to this file.

Specified by:
write in interface java.io.DataOutput
Parameters:
b - the data.
off - the start offset in the data.
len - the number of bytes to write.
Throws:
java.io.IOException - if an I/O error occurs.

readBoolean

public final boolean readBoolean()
                          throws java.io.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 java.io.DataInput
Returns:
the boolean value read.
Throws:
java.io.EOFException - if this file has reached the end.
java.io.IOException - if an I/O error occurs.

readByte

public final byte readByte()
                    throws java.io.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:

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 java.io.DataInput
Returns:
the next byte of this file as a signed 8-bit byte.
Throws:
java.io.EOFException - if this file has reached the end.
java.io.IOException - if an I/O error occurs.

readUnsignedByte

public final int readUnsignedByte()
                           throws java.io.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 java.io.DataInput
Returns:
the next byte of this file, interpreted as an unsigned 8-bit number.
Throws:
java.io.EOFException - if this file has reached the end.
java.io.IOException - if an I/O error occurs.

readShort

public final short readShort()
                      throws java.io.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:

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 java.io.DataInput
Returns:
the next two bytes of this file, interpreted as a signed 16-bit number.
Throws:
java.io.EOFException - if this file reaches the end before reading two bytes.
java.io.IOException - if an I/O error occurs.

readShort

public final void readShort(short[] pa,
                            int start,
                            int n)
                     throws java.io.IOException
Read an array of shorts

Parameters:
pa - read into this array
start - starting at pa[start]
n - read this many elements
Throws:
java.io.IOException - on read error

readUnsignedShort

public final int readUnsignedShort()
                            throws java.io.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:

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 java.io.DataInput
Returns:
the next two bytes of this file, interpreted as an unsigned 16-bit integer.
Throws:
java.io.EOFException - if this file reaches the end before reading two bytes.
java.io.IOException - if an I/O error occurs.

readChar

public final char readChar()
                    throws java.io.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:

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 java.io.DataInput
Returns:
the next two bytes of this file as a Unicode character.
Throws:
java.io.EOFException - if this file reaches the end before reading two bytes.
java.io.IOException - if an I/O error occurs.

readInt

public final int readInt()
                  throws java.io.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:

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 java.io.DataInput
Returns:
the next four bytes of this file, interpreted as an int.
Throws:
java.io.EOFException - if this file reaches the end before reading four bytes.
java.io.IOException - if an I/O error occurs.

readIntUnbuffered

public final int readIntUnbuffered(long pos)
                            throws java.io.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:
java.io.IOException - if an I/O error occurs.

readInt

public final void readInt(int[] pa,
                          int start,
                          int n)
                   throws java.io.IOException
Read an array of ints

Parameters:
pa - read into this array
start - starting at pa[start]
n - read this many elements
Throws:
java.io.IOException - on read error

readLong

public final long readLong()
                    throws java.io.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:

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 java.io.DataInput
Returns:
the next eight bytes of this file, interpreted as a long.
Throws:
java.io.EOFException - if this file reaches the end before reading eight bytes.
java.io.IOException - if an I/O error occurs.

readLong

public final void readLong(long[] pa,
                           int start,
                           int n)
                    throws java.io.IOException
Read an array of longs

Parameters:
pa - read into this array
start - starting at pa[start]
n - read this many elements
Throws:
java.io.IOException - on read error

readFloat

public final float readFloat()
                      throws java.io.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 java.io.DataInput
Returns:
the next four bytes of this file, interpreted as a float.
Throws:
java.io.EOFException - if this file reaches the end before reading four bytes.
java.io.IOException - if an I/O error occurs.
See Also:
RandomAccessFile.readInt(), Float.intBitsToFloat(int)

readFloat

public final void readFloat(float[] pa,
                            int start,
                            int n)
                     throws java.io.IOException
Read an array of floats

Parameters:
pa - read into this array
start - starting at pa[start]
n - read this many elements
Throws:
java.io.IOException - on read error

readDouble

public final double readDouble()
                        throws java.io.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 java.io.DataInput
Returns:
the next eight bytes of this file, interpreted as a double.
Throws:
java.io.EOFException - if this file reaches the end before reading eight bytes.
java.io.IOException - if an I/O error occurs.
See Also:
RandomAccessFile.readLong(), Double.longBitsToDouble(long)

readDouble

public final void readDouble(double[] pa,
                             int start,
                             int n)
                      throws java.io.IOException
Read an array of doubles

Parameters:
pa - read into this array
start - starting at pa[start]
n - read this many elements
Throws:
java.io.IOException - on read error

readLine

public final java.lang.String readLine()
                                throws java.io.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 java.io.DataInput
Returns:
the next line of text from this file.
Throws:
java.io.IOException - if an I/O error occurs.

readUTF

public final java.lang.String readUTF()
                               throws java.io.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 java.io.DataInput
Returns:
a Unicode string.
Throws:
java.io.EOFException - if this file reaches the end before reading all the bytes.
java.io.IOException - if an I/O error occurs.
java.io.UTFDataFormatException - if the bytes do not represent valid UTF-8 encoding of a Unicode string.
See Also:
RandomAccessFile.readUnsignedShort()

readString

public java.lang.String readString(int nbytes)
                            throws java.io.IOException
Read a String of knoen length.

Parameters:
nbytes - number of bytes to read
Returns:
String wrapping the bytes.
Throws:
java.io.IOException - if an I/O error occurs.

writeBoolean

public final void writeBoolean(boolean v)
                        throws java.io.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 java.io.DataOutput
Parameters:
v - a boolean value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeBoolean

public final void writeBoolean(boolean[] pa,
                               int start,
                               int n)
                        throws java.io.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:
java.io.IOException - on read error

writeByte

public final void writeByte(int v)
                     throws java.io.IOException
Writes a byte to the file as a 1-byte value.

Specified by:
writeByte in interface java.io.DataOutput
Parameters:
v - a byte value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeShort

public final void writeShort(int v)
                      throws java.io.IOException
Writes a short to the file as two bytes, high byte first.

Specified by:
writeShort in interface java.io.DataOutput
Parameters:
v - a short to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeShort

public final void writeShort(short[] pa,
                             int start,
                             int n)
                      throws java.io.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:
java.io.IOException - on read error

writeChar

public final void writeChar(int v)
                     throws java.io.IOException
Writes a char to the file as a 2-byte value, high byte first.

Specified by:
writeChar in interface java.io.DataOutput
Parameters:
v - a char value to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeChar

public final void writeChar(char[] pa,
                            int start,
                            int n)
                     throws java.io.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:
java.io.IOException - on read error

writeInt

public final void writeInt(int v)
                    throws java.io.IOException
Writes an int to the file as four bytes, high byte first.

Specified by:
writeInt in interface java.io.DataOutput
Parameters:
v - an int to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeInt

public final void writeInt(int[] pa,
                           int start,
                           int n)
                    throws java.io.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:
java.io.IOException - on read error

writeLong

public final void writeLong(long v)
                     throws java.io.IOException
Writes a long to the file as eight bytes, high byte first.

Specified by:
writeLong in interface java.io.DataOutput
Parameters:
v - a long to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeLong

public final void writeLong(long[] pa,
                            int start,
                            int n)
                     throws java.io.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:
java.io.IOException - on read error

writeFloat

public final void writeFloat(float v)
                      throws java.io.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 java.io.DataOutput
Parameters:
v - a float value to be written.
Throws:
java.io.IOException - if an I/O error occurs.
See Also:
Float.floatToIntBits(float)

writeFloat

public final void writeFloat(float[] pa,
                             int start,
                             int n)
                      throws java.io.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:
java.io.IOException - on read error

writeDouble

public final void writeDouble(double v)
                       throws java.io.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 java.io.DataOutput
Parameters:
v - a double value to be written.
Throws:
java.io.IOException - if an I/O error occurs.
See Also:
Double.doubleToLongBits(double)

writeDouble

public final void writeDouble(double[] pa,
                              int start,
                              int n)
                       throws java.io.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:
java.io.IOException - on read error

writeBytes

public final void writeBytes(java.lang.String s)
                      throws java.io.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 java.io.DataOutput
Parameters:
s - a string of bytes to be written.
Throws:
java.io.IOException - if an I/O error occurs.

writeBytes

public final void writeBytes(char[] b,
                             int off,
                             int len)
                      throws java.io.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:
java.io.IOException - if an I/O error occurs.

writeChars

public final void writeChars(java.lang.String s)
                      throws java.io.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 java.io.DataOutput
Parameters:
s - a String value to be written.
Throws:
java.io.IOException - if an I/O error occurs.
See Also:
RandomAccessFile.writeChar(int)

writeUTF

public final void writeUTF(java.lang.String str)
                    throws java.io.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 java.io.DataOutput
Parameters:
str - a string to be written.
Throws:
java.io.IOException - if an I/O error occurs.

toString

public java.lang.String toString()
Create a string representation of this object.

Overrides:
toString in class java.lang.Object
Returns:
a string representation of the state of the object.

searchForward

public boolean searchForward(KMPMatch match,
                             int maxBytes)
                      throws java.io.IOException
Search forward from the current pos, looking for a match.

Parameters:
match - the match youre looking for.
maxBytes - maximum number of bytes to search. use -1 for all
Returns:
true if found, file position will be at the start of the match.
Throws:
java.io.IOException - on read error