|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectEnhancedRandomAccessFile
public class EnhancedRandomAccessFile
DataInput
,
DataOutput
,
RandomAccessFile
ByteOrder
is not respected with writingField 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 |
---|
public static final int BIG_ENDIAN
public static final int LITTLE_ENDIAN
public static final int DEFAULT_BUFFER_SIZE
protected File file
protected RandomAccessFile eraf
protected long filePosition
protected byte[] buffer
protected long bufferStart
protected long dataEnd
bufferStart + dataSize
, but it is cached to speed up the
read( ) method.
protected int dataSize
protected boolean endOfFile
protected boolean readonly
protected boolean bigEndian
protected long minLength
protected boolean cached
protected String location
Constructor Detail |
---|
protected EnhancedRandomAccessFile(int bufferSize)
bufferSize
- _more_public EnhancedRandomAccessFile(File file, String mode) throws IOException
file
- file of the erafmode
- same as for java.io.RandomAccessFile
IOException
public EnhancedRandomAccessFile(File file, String mode, int bufferSize) throws IOException
file
- file of the erafmode
- same as for java.io.RandomAccessFilebufferSize
- size of buffer to use.
IOException
Method Detail |
---|
public RandomAccessFile getRandomAccessFile()
public void close() throws IOException
IOException
- if an I/O error occurrs.public void finalize()
RandomAccessFile
finalize
in class Object
public boolean isAtEndOfFile()
public FileChannel getChannel()
public void seek(long pos) throws IOException
pos
- the offset (in bytes) from the start of the eraf.
IOException
- if an I/O error occurrs.public long getFilePointer() throws IOException
IOException
- if an I/O error occurrs.public File getFile()
public long length() throws IOException
IOException
- if an I/O error occurrs.public void setByteOrder(ByteOrder bo)
endian
- public ByteOrder getByteOrder()
public FileDescriptor getFD() throws IOException
IOException
- if an I/O error occurs.public void flush() throws IOException
IOException
- if an I/O error occurrs.public void setMinLength(long minLength)
minLength
- _more_public void setExtendMode()
public int read() throws IOException
IOException
- if an I/O error occurrs.protected int readBytes(byte[] b, int off, int len) throws IOException
len
bytes into an array, at a specified offset.
This will block until at least one byte has been read.
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.
IOException
- if an I/O error occurrs.protected int read_(long pos, byte[] b, int offset, int len) throws IOException
pos
- _more_b
- _more_offset
- _more_len
- _more_
IOException
- _more_public int read(byte[] b, int off, int len) throws IOException
len
bytes into an array, at a specified offset.
This will block until at least one byte has been read.
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.
IOException
- if an I/O error occurrs.public int read(byte[] b) throws IOException
b.length( )
bytes into an array. This will
block until at least one byte has been read.
b
- the byte array to receive the bytes.
IOException
- if an I/O error occurrs.public void readFully(byte[] b) throws IOException
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.
readFully
in interface DataInput
b
- the buffer into which the data is read.
EOFException
- if this eraf reaches the end before reading all the bytes.
IOException
- if an I/O error occurs.public void readFully(byte[] b, int off, int len) throws IOException
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.
readFully
in interface DataInput
b
- the buffer into which the data is read.off
- the start offset of the data.len
- the number of bytes to read.
EOFException
- if this eraf reaches the end before reading all the bytes.
IOException
- if an I/O error occurs.public int skipBytes(int n) throws IOException
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.
skipBytes
in interface DataInput
n
- the number of bytes to be skipped.
n
.
EOFException
- if this eraf reaches the end before skipping all the
bytes.
IOException
- if an I/O error occurs.public long skipBytes(long n) throws IOException
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.
n
- the number of bytes to be skipped.
n
.
EOFException
- if this eraf reaches the end before skipping all the
bytes.
IOException
- if an I/O error occurs.public void unread()
public void write(int b) throws IOException
Caveat: the effects of seek( )ing beyond the end of the eraf are undefined.
write
in interface DataOutput
b
- _more_
IOException
- if an I/O error occurrs.public void writeBytes(byte[] b, int off, int len) throws IOException
len
bytes from an array to the eraf.
b
- the array containing the data.off
- the offset in the array to the data.len
- the length of the data.
IOException
- if an I/O error occurrs.public void write(byte[] b) throws IOException
b.length
bytes from the specified byte array
starting at offset off
to this eraf.
write
in interface DataOutput
b
- the data.
IOException
- if an I/O error occurs.public void write(byte[] b, int off, int len) throws IOException
len
bytes from the specified byte array starting at
offset off
to this eraf.
write
in interface DataOutput
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.
IOException
- if an I/O error occurs.public boolean readBoolean() throws IOException
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.
readBoolean
in interface DataInput
boolean
value read.
EOFException
- if this eraf has reached the end.
IOException
- if an I/O error occurs.public byte readByte() throws IOException
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.
readByte
in interface DataInput
byte
.
EOFException
- if this eraf has reached the end.
IOException
- if an I/O error occurs.public int readUnsignedByte() throws IOException
This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.
readUnsignedByte
in interface DataInput
EOFException
- if this eraf has reached the end.
IOException
- if an I/O error occurs.public short readShort() throws IOException
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.
readShort
in interface DataInput
EOFException
- if this eraf reaches the end before reading two bytes.
IOException
- if an I/O error occurs.public void readShort(short[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public int readUnsignedShort() throws IOException
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.
readUnsignedShort
in interface DataInput
EOFException
- if this eraf reaches the end before reading two bytes.
IOException
- if an I/O error occurs.public char readChar() throws IOException
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.
readChar
in interface DataInput
EOFException
- if this eraf reaches the end before reading two bytes.
IOException
- if an I/O error occurs.public int readInt() throws IOException
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.
readInt
in interface DataInput
int
.
EOFException
- if this eraf reaches the end before reading four bytes.
IOException
- if an I/O error occurs.public long readUnsignedInt() throws IOException
IOException
public int readIntUnbuffered(long pos) throws IOException
pos
- read a byte at this position
IOException
public void readInt(int[] pa, int start, int n) throws IOException
b1
,
b2
, and b3
, where
0 <= b1, b2, b3 <= 255
, then
the result is equal to:
(b1 << 16) | (b2 << 8) + (b3 << 0)
This method blocks until the three bytes are read, the end of the stream is detected, or an exception is thrown.
pa
- _more_start
- _more_n
- _more_
EOFException
- if this eraf reaches the end before reading four bytes.
IOException
- if an I/O error occurs.public long readLong() throws IOException
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.
readLong
in interface DataInput
long
.
EOFException
- if this eraf reaches the end before reading eight bytes.
IOException
- if an I/O error occurs.public void readLong(long[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public float readFloat() throws IOException
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.
readFloat
in interface DataInput
float
.
EOFException
- if this eraf reaches the end before reading four bytes.
IOException
- if an I/O error occurs.RandomAccessFile.readInt()
,
Float.intBitsToFloat(int)
public void readFloat(float[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public double readDouble() throws IOException
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.
readDouble
in interface DataInput
double
.
EOFException
- if this eraf reaches the end before reading eight bytes.
IOException
- if an I/O error occurs.RandomAccessFile.readLong()
,
Double.longBitsToDouble(long)
public void readDouble(double[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public String readLine() throws IOException
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.
readLine
in interface DataInput
IOException
- if an I/O error occurs.public String readUTF() throws IOException
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.
readUTF
in interface DataInput
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.RandomAccessFile.readUnsignedShort()
public String readString(int nbytes) throws IOException
nbytes
- number of bytes to read
IOException
public void writeBoolean(boolean v) throws IOException
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
.
writeBoolean
in interface DataOutput
v
- a boolean
value to be written.
IOException
- if an I/O error occurs.public void writeBoolean(boolean[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeByte(int v) throws IOException
byte
to the eraf as a 1-byte value.
writeByte
in interface DataOutput
v
- a byte
value to be written.
IOException
- if an I/O error occurs.public void writeShort(int v) throws IOException
short
to the eraf as two bytes, high byte first.
writeShort
in interface DataOutput
v
- a short
to be written.
IOException
- if an I/O error occurs.public void writeShort(short[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeChar(int v) throws IOException
char
to the eraf as a 2-byte value, high byte
first.
writeChar
in interface DataOutput
v
- a char
value to be written.
IOException
- if an I/O error occurs.public void writeChar(char[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeInt(int v) throws IOException
int
to the eraf as four bytes, high byte first.
writeInt
in interface DataOutput
v
- an int
to be written.
IOException
- if an I/O error occurs.public void writeInt(int[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeLong(long v) throws IOException
long
to the eraf as eight bytes, high byte first.
writeLong
in interface DataOutput
v
- a long
to be written.
IOException
- if an I/O error occurs.public void writeLong(long[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeFloat(float v) throws IOException
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.
writeFloat
in interface DataOutput
v
- a float
value to be written.
IOException
- if an I/O error occurs.Float.floatToIntBits(float)
public void writeFloat(float[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeDouble(double v) throws IOException
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.
writeDouble
in interface DataOutput
v
- a double
value to be written.
IOException
- if an I/O error occurs.Double.doubleToLongBits(double)
public void writeDouble(double[] pa, int start, int n) throws IOException
pa
- _more_start
- _more_n
- _more_
IOException
- _more_public void writeBytes(String s) throws IOException
writeBytes
in interface DataOutput
s
- a string of bytes to be written.
IOException
- if an I/O error occurs.public void writeBytes(char[] b, int off, int len) throws IOException
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.
IOException
- if an I/O error occurs.public void writeChars(String s) throws IOException
writeChar
method.
writeChars
in interface DataOutput
s
- a String
value to be written.
IOException
- if an I/O error occurs.RandomAccessFile.writeChar(int)
public void writeUTF(String str) throws IOException
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.
writeUTF
in interface DataOutput
str
- a string to be written.
IOException
- if an I/O error occurs.public String toString()
toString
in class Object
public void setCached(boolean cached)
cached
- _more_public boolean isCached()
public void synch() throws IOException
IOException
- _more_public String getLocation()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |