java.lang.Object | +--java.io.RandomAccessFileAll Implemented Interfaces:
RandomAccessFile(java.lang.String name, java.lang.String mode) This method initializes a new instance of |
RandomAccessFile(java.io.File file, java.lang.String mode) This method initializes a new instance of |
void | close() This method closes the file and frees up all file related system resources. |
java.nio.channels.FileChannel | getChannel() |
java.io.FileDescriptor | getFD() This method returns a |
long | getFilePointer() This method returns the current offset in the file at which the next read or write will occur |
long | length() This method returns the length of the file in bytes |
int | read() This method reads a single byte of data from the file and returns it as an integer. |
int | read(byte[] buf) This method reads bytes from the file into the specified array. |
int | read(byte[] buf, int offset, int len) This methods reads up to |
boolean | readBoolean() This method reads a Java boolean value from an input stream. |
byte | readByte() This method reads a Java byte value from an input stream. |
char | readChar() This method reads a Java |
double | readDouble() This method reads a Java double value from an input stream. |
float | readFloat() This method reads a Java float value from an input stream. |
void | readFully(byte[] buf) This method reads raw bytes into the passed array until the array is full. |
synchronized void | readFully(byte[] buf, int offset, int len) This method reads raw bytes into the passed array |
int | readInt() This method reads a Java |
synchronized java.lang.String | readLine() This method reads the next line of text data from an input stream. |
long | readLong() This method reads a Java long value from an input stream
It operates by reading eight bytes from the stream and converting them to
a single Java |
short | readShort() This method reads a signed 16-bit value into a Java in from the stream. |
synchronized java.lang.String | readUTF() This method reads a |
int | readUnsignedByte() This method reads 8 unsigned bits into a Java |
int | readUnsignedShort() This method reads 16 unsigned bits into a Java int value from the stream. |
void | seek(long pos) This method sets the current file position to the specified offset from the beginning of the file. |
void | setLength(long newlen) This method sets the length of the file to the specified length. |
int | skipBytes(int n) This method attempts to skip and discard the specified number of bytes in the input stream. |
void | write(int b) This method writes a single byte of data to the file. |
void | write(byte[] buf) This method writes all the bytes in the specified array to the file. |
void | write(byte[] buf, int offset, int len) This method writes |
void | writeBoolean(boolean b) This method writes a Java |
void | writeByte(int b) This method writes a Java |
synchronized void | writeBytes(java.lang.String s) This method writes all the bytes in a |
void | writeChar(int c) This method writes a single |
void | writeChars(java.lang.String s) This method writes all the characters in a |
void | writeDouble(double d) This method writes a Java |
void | writeFloat(float f) This method writes a Java |
void | writeInt(int i) This method writes a Java |
void | writeLong(long l) This method writes a Java |
void | writeShort(int s) This method writes a Java |
synchronized void | writeUTF(java.lang.String s) This method writes a Java |
public RandomAccessFile(java.io.File file, java.lang.String mode)
RandomAccessFile
to read from the specified File
object with the specified
access mode. The access mode is either "r" for read only access or "rw"
for read-write access.
Note that a SecurityManager
check is made prior to
opening the file to determine whether or not this file is allowed to
be read or written.
file
- The File
object to read and/or write.mode
- "r" for read only or "rw" for read-write access to the fileIllegalArgumentException
- If mode
has an illegal valueSecurityException
- If the requested access to the file is not allowedIOException
- If any other error occurspublic RandomAccessFile(java.lang.String name, java.lang.String mode)
RandomAccessFile
to read from the specified file name with the specified access mode.
The access mode is either "r" for read only access or "rw" for read
write access.
Note that a SecurityManager
check is made prior to
opening the file to determine whether or not this file is allowed to
be read or written.
name
- The name of the file to read and/or writemode
- "r" for read only or "rw" for read-write access to the fileIllegalArgumentException
- If mode
has an illegal valueSecurityException
- If the requested access to the file is not allowedIOException
- If any other error occurspublic void close()
public FileChannel getChannel()
public final FileDescriptor getFD()
FileDescriptor
object that
represents the native file handle for this file.
FileDescriptor
object for this fileIOException
- If an error occurspublic long getFilePointer()
IOException
- If an error occurspublic long length()
IOException
- If an error occurspublic int read()
IOException
- If an error occurspublic int read(byte[] buf)
buf.length
bytes can be read.
buf
- The buffer to read bytes from the file intoIOException
- If an error occurspublic int read(byte[] buf, int offset, int len)
len
bytes from the file into the s
pecified array starting at position offset
into the array.
buf
- The array to read the bytes intooffset
- The index into the array to start storing byteslen
- The requested number of bytes to readIOException
- If an error occurspublic final boolean readBoolean()
false
If the byte is non-zero, then
the value returned is true
This method can read a boolean
written by an object implementing the
writeBoolean()
method in the DataOutput
interface.
boolean
value readEOFException
- If end of file is reached before reading the booleanIOException
- If any other error occurspublic final byte readByte()
This method can read a byte
written by an object implementing the
writeByte()
method in the DataOutput
interface.
byte
value readEOFException
- If end of file is reached before reading the byteIOException
- If any other error occurspublic final char readChar()
char
value from an input stream.
It operates by reading two bytes from the stream and converting them to
a single 16-bit Java char
The two bytes are stored most
significant byte first (i.e., "big endian") regardless of the native
host byte ordering.
As an example, if byte1
and code{byte2 represent the first
and second byte read from the stream respectively, they will be
transformed to a char
in the following manner:
(char)(((byte1 & 0xFF) << 8) | (byte2 & 0xFF)
This method can read a char
written by an object implementing the
writeChar()
method in the DataOutput
interface.
char
value readEOFException
- If end of file is reached before reading the charIOException
- If any other error occurspublic final double readDouble()
logn
value from the stream by calling the
readLong()
method in this interface, then converts that long
to a double
using the longBitsToDouble
method in
the class java.lang.Double
This method can read a double
written by an object implementing the
writeDouble()
method in the DataOutput
interface.
double
value readEOFException
- If end of file is reached before reading the doubleIOException
- If any other error occursjava.lang.Double
DataOutput
public final float readFloat()
int
value from the stream by calling the
readInt()
method in this interface, then converts that int
to a float
using the intBitsToFloat
method in
the class java.lang.Float
This method can read a float
written by an object implementing the
writeFloat()
method in the DataOutput
interface.
float
value readEOFException
- If end of file is reached before reading the floatIOException
- If any other error occursjava.lang.Float
DataOutput
public final void readFully(byte[] buf)
buf
- The buffer into which to read the dataEOFException
- If end of file is reached before filling the bufferIOException
- If any other error occurspublic final synchronized void readFully(byte[] buf, int offset, int len)
buf
starting
offset
bytes into the buffer. The number of bytes read will be
exactly len
Note that this method blocks until the data is
available and * throws an exception if there is not enough data left in
the stream to read len
bytes.
buf
- The buffer into which to read the dataoffset
- The offset into the buffer to start storing datalen
- The number of bytes to read into the bufferEOFException
- If end of file is reached before filling the bufferIOException
- If any other error occurspublic final int readInt()
int
value from an input stream
It operates by reading four bytes from the stream and converting them to
a single Java int
The bytes are stored most
significant byte first (i.e., "big endian") regardless of the native
host byte ordering.
As an example, if byte1
through byte4
represent the first
four bytes read from the stream, they will be
transformed to an int
in the following manner:
(int)(((byte1 & 0xFF) << 24) + ((byte2 & 0xFF) << 16) +
((byte3 & 0xFF) << 8) + (byte4 & 0xFF)))
The value returned is in the range of 0 to 65535.
This method can read an int
written by an object implementing the
writeInt()
method in the DataOutput
interface.
int
value readEOFException
- If end of file is reached before reading the intIOException
- If any other error occurspublic final synchronized String readLine()
char
values by treating the byte read as the low eight bits of the char
and using 0
as the high eight bits. Because of this, it does
not support the full 16-bit Unicode character set.
The reading of bytes ends when either the end of file or a line terminator
is encountered. The bytes read are then returned as a String
A line terminator is a byte sequence consisting of either
\r
\n
or \r\n
These termination charaters are
discarded and are not returned as part of the string.
This method can read data that was written by an object implementing the
writeLine()
method in DataOutput
String
IOException
- If an error occurspublic final long readLong()
long
The bytes are stored most
significant byte first (i.e., "big endian") regardless of the native
host byte ordering.
As an example, if byte1
through byte8
represent the first
eight bytes read from the stream, they will be
transformed to an long
in the following manner:
(long)((((long)byte1 & 0xFF) << 56) + (((long)byte2 & 0xFF) << 48) +
(((long)byte3 & 0xFF) << 40) + (((long)byte4 & 0xFF) << 32) +
(((long)byte5 & 0xFF) << 24) + (((long)byte6 & 0xFF) << 16) +
(((long)byte7 & 0xFF) << 8) + ((long)byte9 & 0xFF)))
The value returned is in the range of 0 to 65535.
This method can read an long
written by an object implementing the
writeLong()
method in the DataOutput
interface.
long
value readEOFException
- If end of file is reached before reading the longIOException
- If any other error occurspublic final short readShort()
short
The two bytes are stored most
significant byte first (i.e., "big endian") regardless of the native
host byte ordering.
As an example, if byte1
and code{byte2 represent the first
and second byte read from the stream respectively, they will be
transformed to a short
in the following manner:
(short)(((byte1 & 0xFF) << 8) | (byte2 & 0xFF)
The value returned is in the range of -32768 to 32767.
This method can read a short
written by an object implementing the
writeShort()
method in the DataOutput
interface.
short
value readEOFException
- If end of file is reached before reading the valueIOException
- If any other error occurspublic final synchronized String readUTF()
String
from an input stream that is encoded in
a modified UTF-8 format. This format has a leading two byte sequence
that contains the remaining number of bytes to read. This two byte
sequence is read using the readUnsignedShort()
method of this
interface.
After the number of remaining bytes have been determined, these bytes
are read an transformed into char
values. These char
values
are encoded in the stream using either a one, two, or three byte format.
The particular format in use can be determined by examining the first
byte read.
If the first byte has a high order bit of 0 then
that character consists on only one byte. This character value consists
of seven bits that are at positions 0 through 6 of the byte. As an
example, if byte1
is the byte read from the stream, it would
be converted to a char
like so:
(char)byte1
If the first byte has 110
as its high order bits, then the
character consists of two bytes. The bits that make up the character
value are in positions 0 through 4 of the first byte and bit positions
0 through 5 of the second byte. (The second byte should have
10 as its high order bits). These values are in most significant
byte first (i.e., "big endian") order.
As an example, if byte1
and byte2
are the first two bytes
read respectively, and the high order bits of them match the patterns
which indicate a two byte character encoding, then they would be
converted to a Java char
like so:
(char)(((byte1 & 0x1F) << 6) | (byte2 & 0x3F))
If the first byte has a 1110
as its high order bits, then the
character consists of three bytes. The bits that make up the character
value are in positions 0 through 3 of the first byte and bit positions
0 through 5 of the other two bytes. (The second and third bytes should
have 10
as their high order bits). These values are in most
significant byte first (i.e., "big endian") order.
As an example, if byte1
byte2
and byte3
are the
three bytes read, and the high order bits of them match the patterns
which indicate a three byte character encoding, then they would be
converted to a Java char
like so:
(char)(((byte1 & 0x0F) << 12) | ((byte2 & 0x3F) << 6) | (byte3 & 0x3F))
Note that all characters are encoded in the method that requires the
fewest number of bytes with the exception of the character with the
value of \u0000
which is encoded as two bytes. This is a
modification of the UTF standard used to prevent C language style
NUL
values from appearing in the byte stream.
This method can read data that was written by an object implementing the
writeUTF()
method in DataOutput
String
readEOFException
- If end of file is reached before reading the StringUTFDataFormatException
- If the data is not in UTF-8 formatIOException
- If any other error occurspublic final int readUnsignedByte()
int
value from the
stream. The value returned is in the range of 0 to 255.
This method can read an unsigned byte written by an object implementing the
writeUnsignedByte()
method in the DataOutput
interface.
int
EOFException
- If end of file is reached before reading the valueIOException
- If any other error occurspublic final int readUnsignedShort()
int
The two bytes are stored most
significant byte first (i.e., "big endian") regardless of the native
host byte ordering.
As an example, if byte1
and code{byte2 represent the first
and second byte read from the stream respectively, they will be
transformed to an int
in the following manner:
(int)(((byte1 & 0xFF) << 8) + (byte2 & 0xFF))
The value returned is in the range of 0 to 65535.
This method can read an unsigned short written by an object implementing
the writeUnsignedShort()
method in the DataOutput
interface.
int
EOFException
- If end of file is reached before reading the valueIOException
- If any other error occurspublic void seek(long pos)
pos
- The offset from the beginning of the file at which to set the file pointerIOException
- If an error occurspublic void setLength(long newlen)
The file must be open for write access for this operation to succeed.
newlen
- The new length of the fileIOException
- If an error occurspublic int skipBytes(int n)
n
- The requested number of bytes to skip.IOException
- If an error occurs.public void write(byte[] buf)
buf
- The array of bytes to write to the filepublic void write(byte[] buf, int offset, int len)
len
bytes to the file from the specified
array starting at index offset
into the array.
buf
- The array of bytes to write to the fileoffset
- The index into the array to start writing filelen
- The number of bytes to writeIOException
- If an error occurspublic void write(int b)
b
- byte of data to write, passed as an int.IOException
- If an error occurspublic final void writeBoolean(boolean b)
boolean
to the underlying output
stream. For a value of true
, 1 is written to the stream.
For a value of false
, 0 is written.
b
- The boolean
value to write to the streamIOException
- If an error occurspublic final void writeByte(int b)
byte
value to the underlying
output stream.
b
- The byte
to write to the stream, passed as an int
.IOException
- If an error occurspublic final synchronized void writeBytes(java.lang.String s)
String
out to the
stream. One byte is written for each character in the String
.
The high eight bits of each character are discarded.
s
- The String
to write to the streamIOException
- If an error occurspublic final void writeChar(int c)
char
value to the stream,
high byte first.
c
- The char
value to write, passed as an int
.IOException
- If an error occurspublic final void writeChars(java.lang.String s)
String
to the
stream. There will be two bytes for each character value. The high
byte of the character will be written first.
s
- The String
to write to the stream.IOException
- If an error occurspublic final void writeDouble(double d)
double
value to the stream. This
value is written by first calling the method Double.doubleToLongBits
to retrieve an long
representing the floating point number,
then writing this long
value to the stream exactly the same
as the writeLong()
method does.
d
- The double precision floating point number to write to the stream.IOException
- If an error occurswriteLong
public final void writeFloat(float f)
float
value to the stream. This
value is written by first calling the method Float.floatToIntBits
to retrieve an int
representing the floating point number,
then writing this int
value to the stream exactly the same
as the writeInt()
method does.
f
- The floating point number to write to the stream.IOException
- If an error occurswriteInt
public final void writeInt(int i)
int
to the stream, high bytes
first. This method requires four bytes to encode the value.
i
- The int
value to write to the stream.IOException
- If an error occurspublic final void writeLong(long l)
long
to the stream, high bytes
first. This method requires eight bytes to encode the value.
l
- The long
value to write to the stream.IOException
- If an error occurspublic final void writeShort(int s)
short
to the stream, high byte
first. This method requires two bytes to encode the value.
s
- The short
value to write to the stream, passed as an int
.IOException
- If an error occurspublic final synchronized void writeUTF(java.lang.String s)
String
to the stream in a modified
UTF-8 format. First, two bytes are written to the stream indicating the
number of bytes to follow. Note that this is the number of bytes in the
encoded String
not the String
length. Next
come the encoded characters. Each character in the String
is encoded as either one, two or three bytes. For characters in the
range of \u0001
to \u007F
, one byte is used. The character
value goes into bits 0-7 and bit eight is 0. For characters in the range
of \u0080
to \u007FF
, two bytes are used. Bits
6-10 of the character value are encoded bits 0-4 of the first byte, with
the high bytes having a value of "110". Bits 0-5 of the character value
are stored in bits 0-5 of the second byte, with the high bits set to
"10". This type of encoding is also done for the null character
\u0000
. This eliminates any C style NUL character values
in the output. All remaining characters are stored as three bytes.
Bits 12-15 of the character value are stored in bits 0-3 of the first
byte. The high bits of the first bytes are set to "1110". Bits 6-11
of the character value are stored in bits 0-5 of the second byte. The
high bits of the second byte are set to "10". And bits 0-5 of the
character value are stored in bits 0-5 of byte three, with the high bits
of that byte set to "10".
s
- The String
to write to the output in UTF formatIOException
- If an error occurs
DataInput
andDataOutput
interfaces to allow the reading and writing of Java primitives.