it.geosolutions.imageio.stream.eraf
Class EnhancedRandomAccessFile

Object
  extended by EnhancedRandomAccessFile
All Implemented Interfaces:
DataInput, DataOutput

public class EnhancedRandomAccessFile
extends Object
implements DataInput, DataOutput

Author:
Simone Giannecchini, GeoSolutions. -- NOTES from a class we derived this class from -- RandomAccessFile.java. 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. 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., Alex McManus, Russ Rew, john caron
See Also:
DataInput, DataOutput, RandomAccessFile
TODO:
ByteOrder is not respected with writing

Field Summary
static int BIG_ENDIAN
          _more_
protected  boolean bigEndian
          The current endian (big or little) mode of the eraf.
protected  byte[] buffer
          The buffer used to load the data.
protected  long bufferStart
          The offset in bytes of the start of the buffer, from the start of the eraf.
protected  boolean cached
          Support for FileCache.
protected  long dataEnd
          The offset in bytes of the end of the data in the buffer, from the start of the eraf.
protected  int dataSize
          The size of the data stored in the buffer, in bytes.
static int DEFAULT_BUFFER_SIZE
          The default buffer size, in bytes.
protected  boolean endOfFile
          True if we are at the end of the eraf.
protected  RandomAccessFile eraf
          The underlying java.io.RandomAccessFile.
protected  File file
          _more_
protected  long filePosition
          The offset in bytes from the eraf start, of the next read or write operation.
static int LITTLE_ENDIAN
          _more_
protected  String location
           
protected  long minLength
          make sure eraf is this long when closed
protected  boolean readonly
          The access mode of the eraf.
 
Constructor Summary
  EnhancedRandomAccessFile(File file, String mode)
          Constructor, default buffer size.
  EnhancedRandomAccessFile(File file, String mode, int bufferSize)
          Constructor.
protected EnhancedRandomAccessFile(int bufferSize)
          _more_
 
Method Summary
 void close()
          Close the eraf, and release any associated system resources.
 void finalize()
          Close silently the underlying RandomAccessFile
 void flush()
          Copy the contents of the buffer to the disk.
 ByteOrder getByteOrder()
           
 FileChannel getChannel()
          _more_
 FileDescriptor getFD()
          Returns the opaque eraf descriptor object associated with this eraf.
 File getFile()
          Get the eraf file, or name.
 long getFilePointer()
          Returns the current position in the eraf, where the next read or write will occur.
 String getLocation()
           
 RandomAccessFile getRandomAccessFile()
           
 boolean isAtEndOfFile()
          Return true if eraf pointer is at end of eraf.
 boolean isCached()
          _more_
 long length()
          Get the length of the eraf.
protected  int read_(long pos, byte[] b, int offset, int len)
          read directly, without going through the buffer
 int read()
          Read a byte of data from the eraf, 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 eraf.
 byte readByte()
          Reads a signed 8-bit value from this eraf.
protected  int readBytes(byte[] b, int off, int len)
          Read up to len bytes into an array, at a specified offset.
 char readChar()
          Reads a Unicode character from this eraf.
 double readDouble()
          Reads a double from this eraf.
 void readDouble(double[] pa, int start, int n)
          _more_
 float readFloat()
          Reads a float from this eraf.
 void readFloat(float[] pa, int start, int n)
          _more_
 void readFully(byte[] b)
          Reads b.length bytes from this eraf into the byte array.
 void readFully(byte[] b, int off, int len)
          Reads exactly len bytes from this eraf into the byte array.
 int readInt()
          Reads a signed 32-bit integer from this eraf.
 void readInt(int[] pa, int start, int n)
          Reads a signed 24-bit integer from this eraf.
 int readIntUnbuffered(long pos)
          Read an integer at the given position, bypassing all buffering.
 String readLine()
          Reads the next line of text from this eraf.
 long readLong()
          Reads a signed 64-bit integer from this eraf.
 void readLong(long[] pa, int start, int n)
          _more_
 short readShort()
          Reads a signed 16-bit number from this eraf.
 void readShort(short[] pa, int start, int n)
          _more_
 String readString(int nbytes)
          Read a String of knoen length.
 int readUnsignedByte()
          Reads an unsigned 8-bit number from this eraf.
 long readUnsignedInt()
           
 int readUnsignedShort()
          Reads an unsigned 16-bit number from this eraf.
 String readUTF()
          Reads in a string from this eraf.
 void seek(long pos)
          Set the position in the eraf for the next read or write.
 void setByteOrder(ByteOrder bo)
          Change the current endian mode.
 void setCached(boolean cached)
          _more_
 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 eraf is at least this long when its closed. needed when not using fill mode, and not all data is written.
 int skipBytes(int n)
          Skips exactly n bytes of input.
 long skipBytes(long n)
          Skips exactly n bytes of input.
 void synch()
          _more_
 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 eraf.
 void write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this eraf.
 void write(int b)
          Write a byte to the eraf.
 void writeBoolean(boolean v)
          Writes a boolean to the eraf as a 1-byte value.
 void writeBoolean(boolean[] pa, int start, int n)
          _more_
 void writeByte(int v)
          Writes a byte to the eraf as a 1-byte value.
 void writeBytes(byte[] b, int off, int len)
          Write len bytes from an array to the eraf.
 void writeBytes(char[] b, int off, int len)
          Writes the character array to the eraf as a sequence of bytes.
 void writeBytes(String s)
          Writes the string to the eraf as a sequence of bytes.
 void writeChar(char[] pa, int start, int n)
          _more_
 void writeChar(int v)
          Writes a char to the eraf as a 2-byte value, high byte first.
 void writeChars(String s)
          Writes a string to the eraf 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 eraf as an 8-byte quantity, high byte first.
 void writeDouble(double[] pa, int start, int n)
          _more_
 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 eraf as a 4-byte quantity, high byte first.
 void writeFloat(float[] pa, int start, int n)
          _more_
 void writeInt(int v)
          Writes an int to the eraf as four bytes, high byte first.
 void writeInt(int[] pa, int start, int n)
          _more_
 void writeLong(long v)
          Writes a long to the eraf as eight bytes, high byte first.
 void writeLong(long[] pa, int start, int n)
          _more_
 void writeShort(int v)
          Writes a short to the eraf as two bytes, high byte first.
 void writeShort(short[] pa, int start, int n)
          _more_
 void writeUTF(String str)
          Writes a string to the eraf using UTF-8 encoding in a machine-independent manner.
 
Methods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BIG_ENDIAN

public static final int BIG_ENDIAN
_more_

See Also:
Constant Field Values

LITTLE_ENDIAN

public static final int LITTLE_ENDIAN
_more_

See Also:
Constant Field Values

DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE
The default buffer size, in bytes.

See Also:
Constant Field Values

file

protected File file
_more_


eraf

protected RandomAccessFile eraf
The underlying java.io.RandomAccessFile.


filePosition

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


buffer

protected byte[] buffer
The buffer used to load the data.


bufferStart

protected long bufferStart
The offset in bytes of the start of the buffer, from the start of the eraf.


dataEnd

protected long dataEnd
The offset in bytes of the end of the data in the buffer, from the start of the eraf. 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 eraf.


readonly

protected boolean readonly
The access mode of the eraf.


bigEndian

protected boolean bigEndian
The current endian (big or little) mode of the eraf.


minLength

protected long minLength
make sure eraf is this long when closed


cached

protected boolean cached
Support for FileCache.


location

protected String location
Constructor Detail

EnhancedRandomAccessFile

protected EnhancedRandomAccessFile(int bufferSize)
_more_

Parameters:
bufferSize - _more_

EnhancedRandomAccessFile

public EnhancedRandomAccessFile(File file,
                                String mode)
                         throws IOException
Constructor, default buffer size.

Parameters:
file - file of the eraf
mode - same as for java.io.RandomAccessFile
Throws:
IOException

EnhancedRandomAccessFile

public EnhancedRandomAccessFile(File file,
                                String mode,
                                int bufferSize)
                         throws IOException
Constructor.

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

getRandomAccessFile

public RandomAccessFile getRandomAccessFile()

close

public void close()
           throws IOException
Close the eraf, and release any associated system resources.

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

finalize

public void finalize()
Close silently the underlying RandomAccessFile

Overrides:
finalize in class Object

isAtEndOfFile

public boolean isAtEndOfFile()
Return true if eraf pointer is at end of eraf.

Returns:
_more_

getChannel

public FileChannel getChannel()
_more_

Returns:
_more_

seek

public void seek(long pos)
          throws IOException
Set the position in the eraf for the next read or write.

Parameters:
pos - the offset (in bytes) from the start of the eraf.
Throws:
IOException - if an I/O error occurrs.

getFilePointer

public long getFilePointer()
                    throws IOException
Returns the current position in the eraf, where the next read or write will occur.

Returns:
the offset from the start of the eraf in bytes.
Throws:
IOException - if an I/O error occurrs.

getFile

public File getFile()
Get the eraf file, or name.

Returns:
_more_

length

public long length()
            throws IOException
Get the length of the eraf. The data in the buffer (which may not have been written the disk yet) is taken into account.

Returns:
the length of the eraf in bytes.
Throws:
IOException - if an I/O error occurrs.

setByteOrder

public void setByteOrder(ByteOrder bo)
Change the current endian mode. Subsequent reads of short, int, float, double, long, char will use this. Does not currently effect writes.

Parameters:
endian -

getByteOrder

public ByteOrder getByteOrder()

getFD

public FileDescriptor getFD()
                     throws IOException
Returns the opaque eraf descriptor object associated with this eraf.

Returns:
the eraf descriptor object associated with this eraf.
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 occurrs.

setMinLength

public void setMinLength(long minLength)
Make sure eraf is at least this long when its closed. needed when not using fill mode, and not all data is written.

Parameters:
minLength - _more_

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 eraf, blocking until data is available.

Returns:
the next byte of data, or -1 if the end of the eraf 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 eraf being reached.
Throws:
IOException - if an I/O error occurrs.

read_

protected int read_(long pos,
                    byte[] b,
                    int offset,
                    int len)
             throws IOException
read directly, without going through the buffer

Parameters:
pos - _more_
b - _more_
offset - _more_
len - _more_
Returns:
_more_
Throws:
IOException - _more_

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 eraf 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 eraf being reached.
Throws:
IOException - if an I/O error occurrs.

readFully

public void readFully(byte[] b)
               throws IOException
Reads b.length bytes from this eraf into the byte array. This method reads repeatedly from the eraf 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 eraf reaches the end before reading all the bytes.
IOException - if an I/O error occurs.

readFully

public void readFully(byte[] b,
                      int off,
                      int len)
               throws IOException
Reads exactly len bytes from this eraf into the byte array. This method reads repeatedly from the eraf 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 eraf 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 eraf reaches the end before skipping all the bytes.
IOException - if an I/O error occurs.

skipBytes

public long skipBytes(long 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.

Parameters:
n - the number of bytes to be skipped.
Returns:
the number of bytes skipped, which is always n.
Throws:
EOFException - if this eraf 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 eraf. If the eraf has not been opened for writing, an IOException will be raised only when an attempt is made to write the buffer to the eraf.

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

Specified by:
write in interface DataOutput
Parameters:
b - _more_
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 eraf.

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 eraf.

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 eraf.

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 boolean readBoolean()
                    throws IOException
Reads a boolean from this eraf. This method reads a single byte from the eraf. 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 eraf has reached the end.
IOException - if an I/O error occurs.

readByte

public byte readByte()
              throws IOException
Reads a signed 8-bit value from this eraf. This method reads a byte from the eraf. 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 DataInput
Returns:
the next byte of this eraf as a signed 8-bit byte.
Throws:
EOFException - if this eraf has reached the end.
IOException - if an I/O error occurs.

readUnsignedByte

public int readUnsignedByte()
                     throws IOException
Reads an unsigned 8-bit number from this eraf. This method reads a byte from this eraf 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 eraf, interpreted as an unsigned 8-bit number.
Throws:
EOFException - if this eraf has reached the end.
IOException - if an I/O error occurs.

readShort

public short readShort()
                throws IOException
Reads a signed 16-bit number from this eraf. The method reads 2 bytes from this eraf. 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 DataInput
Returns:
the next two bytes of this eraf, interpreted as a signed 16-bit number.
Throws:
EOFException - if this eraf reaches the end before reading two bytes.
IOException - if an I/O error occurs.

readShort

public void readShort(short[] pa,
                      int start,
                      int n)
               throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
Reads an unsigned 16-bit number from this eraf. This method reads two bytes from the eraf. 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 DataInput
Returns:
the next two bytes of this eraf, interpreted as an unsigned 16-bit integer.
Throws:
EOFException - if this eraf reaches the end before reading two bytes.
IOException - if an I/O error occurs.

readChar

public char readChar()
              throws IOException
Reads a Unicode character from this eraf. This method reads two bytes from the eraf. 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 DataInput
Returns:
the next two bytes of this eraf as a Unicode character.
Throws:
EOFException - if this eraf reaches the end before reading two bytes.
IOException - if an I/O error occurs.

readInt

public int readInt()
            throws IOException
Reads a signed 32-bit integer from this eraf. This method reads 4 bytes from the eraf. 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 DataInput
Returns:
the next four bytes of this eraf, interpreted as an int.
Throws:
EOFException - if this eraf reaches the end before reading four bytes.
IOException - if an I/O error occurs.

readUnsignedInt

public long readUnsignedInt()
                     throws IOException
Throws:
IOException

readIntUnbuffered

public 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

readInt

public void readInt(int[] pa,
                    int start,
                    int n)
             throws IOException
Reads a signed 24-bit integer from this eraf. This method reads 3 bytes from the eraf. If the bytes read, in order, are b1, b2, and b3, where 0 <= b1, b2, b3 <= 255, then the result is equal to:

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

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
EOFException - if this eraf reaches the end before reading four bytes.
IOException - if an I/O error occurs.

readLong

public long readLong()
              throws IOException
Reads a signed 64-bit integer from this eraf. This method reads eight bytes from the eraf. 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 DataInput
Returns:
the next eight bytes of this eraf, interpreted as a long.
Throws:
EOFException - if this eraf reaches the end before reading eight bytes.
IOException - if an I/O error occurs.

readLong

public void readLong(long[] pa,
                     int start,
                     int n)
              throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

readFloat

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

readFloat

public void readFloat(float[] pa,
                      int start,
                      int n)
               throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

readDouble

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

readDouble

public void readDouble(double[] pa,
                       int start,
                       int n)
                throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

readLine

public String readLine()
                throws IOException
Reads the next line of text from this eraf. This method successively reads bytes from the eraf 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 eraf.
Throws:
IOException - if an I/O error occurs.
TODO:
we can optimize this

readUTF

public String readUTF()
               throws IOException
Reads in a string from this eraf. 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 eraf 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:
RandomAccessFile.readUnsignedShort()

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

writeBoolean

public void writeBoolean(boolean v)
                  throws IOException
Writes a boolean to the eraf 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 void writeBoolean(boolean[] pa,
                         int start,
                         int n)
                  throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeByte

public void writeByte(int v)
               throws IOException
Writes a byte to the eraf 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 void writeShort(int v)
                throws IOException
Writes a short to the eraf 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 void writeShort(short[] pa,
                       int start,
                       int n)
                throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeChar

public void writeChar(int v)
               throws IOException
Writes a char to the eraf 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 void writeChar(char[] pa,
                      int start,
                      int n)
               throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeInt

public void writeInt(int v)
              throws IOException
Writes an int to the eraf 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 void writeInt(int[] pa,
                     int start,
                     int n)
              throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeLong

public void writeLong(long v)
               throws IOException
Writes a long to the eraf 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 void writeLong(long[] pa,
                      int start,
                      int n)
               throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeFloat

public 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 eraf 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:
Float.floatToIntBits(float)

writeFloat

public void writeFloat(float[] pa,
                       int start,
                       int n)
                throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeDouble

public 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 eraf 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:
Double.doubleToLongBits(double)

writeDouble

public void writeDouble(double[] pa,
                        int start,
                        int n)
                 throws IOException
_more_

Parameters:
pa - _more_
start - _more_
n - _more_
Throws:
IOException - _more_

writeBytes

public void writeBytes(String s)
                throws IOException
Writes the string to the eraf 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 void writeBytes(char[] b,
                       int off,
                       int len)
                throws IOException
Writes the character array to the eraf 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 void writeChars(String s)
                throws IOException
Writes a string to the eraf 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:
RandomAccessFile.writeChar(int)

writeUTF

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

First, two bytes are written to the eraf 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.

setCached

public void setCached(boolean cached)
_more_

Parameters:
cached - _more_

isCached

public boolean isCached()
_more_

Returns:
_more_

synch

public void synch()
           throws IOException
_more_

Throws:
IOException - _more_

getLocation

public String getLocation()


Copyright © 2006-2010 GeoSolutions. All Rights Reserved.