java.io
public class RandomAccessFile extends Object implements DataOutput, DataInput, Closeable
DataInput and DataOutput interfaces to allow
the reading and writing of Java primitives.
| Constructor Summary | |
|---|---|
| RandomAccessFile(File file, String mode)
This method initializes a new instance of RandomAccessFile
to read from the specified File object with the specified
access mode. | |
| RandomAccessFile(String fileName, String mode)
This method initializes a new instance of RandomAccessFile
to read from the specified file name with the specified access mode.
| |
| Method Summary | |
|---|---|
| void | close()
This method closes the file and frees up all file related system
resources. |
| FileChannel | getChannel()
This method creates a java.nio.channels.FileChannel.
|
| FileDescriptor | getFD()
This method returns a FileDescriptor object that
represents the native file handle for this file.
|
| 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[] buffer)
This method reads bytes from the file into the specified array. |
| int | read(byte[] buffer, int offset, int len)
This methods reads up to len bytes from the file into the
specified array starting at position offset into the array.
|
| 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 char value from an input stream.
|
| 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[] buffer)
This method reads raw bytes into the passed array until the array is
full. |
| void | readFully(byte[] buffer, int offset, int count)
This method reads raw bytes into the passed array buf
starting
offset bytes into the buffer. |
| int | readInt()
This method reads a Java 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.
|
| 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 long The bytes are stored most
significant byte first (i.e., "big endian") regardless of the native
host byte ordering.
|
| short | readShort()
This method reads a signed 16-bit value into a Java in from the stream.
|
| int | readUnsignedByte()
This method reads 8 unsigned bits into a Java int value
from the
stream. |
| int | readUnsignedShort()
This method reads 16 unsigned bits into a Java int value from the stream.
|
| String | readUTF()
This method reads a String from an input stream that
is encoded in
a modified UTF-8 format. |
| 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 numBytes)
This method attempts to skip and discard the specified number of bytes
in the input stream. |
| void | write(int oneByte)
This method writes a single byte of data to the file. |
| void | write(byte[] buffer)
This method writes all the bytes in the specified array to the file.
|
| void | write(byte[] buffer, int offset, int len)
This method writes len bytes to the file from the specified
array starting at index offset into the array.
|
| void | writeBoolean(boolean val)
This method writes a Java boolean to the underlying output
stream. |
| void | writeByte(int val)
This method writes a Java byte value to the underlying
output stream.
|
| void | writeBytes(String val)
This method writes all the bytes in a String out to the
stream. |
| void | writeChar(int val)
This method writes a single char value to the stream,
high byte first.
|
| void | writeChars(String val)
This method writes all the characters in a String to the
stream. |
| void | writeDouble(double val)
This method writes a Java double value to the stream. |
| void | writeFloat(float val)
This method writes a Java float value to the stream. |
| void | writeInt(int val)
This method writes a Java int to the stream, high bytes
first. |
| void | writeLong(long val)
This method writes a Java long to the stream, high bytes
first. |
| void | writeShort(int val)
This method writes a Java short to the stream, high byte
first. |
| void | writeUTF(String val)
This method writes a Java String to the stream in a modified
UTF-8 format. |
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.
Parameters: file The File object to read and/or write. mode "r" for read only or "rw" for read-write access to the file
Throws: IllegalArgumentException If mode has an
illegal value SecurityException If the requested access to the file
is not allowed FileNotFoundException If the file is a directory, or
any other error occurs
RandomAccessFile
to read from the specified file name with the specified access mode.
The access mode is either "r" for read only access, "rw" for read
write access, "rws" for synchronized read/write access of both
content and metadata, or "rwd" for read/write access
where only content is required to be synchronous.
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.
Parameters: fileName The name of the file to read and/or write mode "r", "rw", "rws", or "rwd"
Throws: IllegalArgumentException If mode has an
illegal value SecurityException If the requested access to the file
is not allowed FileNotFoundException If the file is a directory or
any other error occurs
FileDescriptor object that
represents the native file handle for this file.
Returns: The FileDescriptor object for this file
Throws: IOException If an error occurs
Returns: The current file position
Throws: IOException If an error occurs
Returns: The length of the file
Throws: IOException If an error occurs
Returns: The byte read as an int, or -1 if the end of the file was reached.
Throws: IOException If an error occurs
buf.length bytes can be read.
Parameters: buffer The buffer to read bytes from the file into
Returns: The actual number of bytes read or -1 if end of file
Throws: IOException If an error occurs
len bytes from the file into the
specified array starting at position offset into the array.
Parameters: buffer The array to read the bytes into offset The index into the array to start storing bytes len The requested number of bytes to read
Returns: The actual number of bytes read, or -1 if end of file
Throws: IOException If an error occurs
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.
Returns: The boolean value read
Throws: EOFException If end of file is reached before reading the boolean IOException If any other error occurs
This method can read a byte written by an object
implementing the
writeByte() method in the DataOutput interface.
Returns: The byte value read
Throws: EOFException If end of file is reached before reading the byte IOException If any other error occurs
See Also: DataOutput
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 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.
Returns: The char value read
Throws: EOFException If end of file is reached before reading the char IOException If any other error occurs
See Also: DataOutput
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.
Returns: The double value read
Throws: EOFException If end of file is reached before reading the double IOException If any other error occurs
See Also: Double DataOutput
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.
Returns: The float value read
Throws: EOFException If end of file is reached before reading the float IOException If any other error occurs
See Also: Float DataOutput
Parameters: buffer The buffer into which to read the data
Throws: EOFException If end of file is reached before filling the buffer IOException If any other error occurs
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.
Parameters: buffer The buffer into which to read the data offset The offset into the buffer to start storing data count The number of bytes to read into the buffer
Throws: EOFException If end of file is reached before filling the buffer IOException If any other error occurs
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.
Returns: The int value read
Throws: EOFException If end of file is reached before reading the int IOException If any other error occurs
See Also: DataOutput
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
Returns: The line read as a String
Throws: IOException If an error occurs
See Also: DataOutput
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.
Returns: The long value read
Throws: EOFException If end of file is reached before reading the long IOException If any other error occurs
See Also: DataOutput
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 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.
Returns: The short value read
Throws: EOFException If end of file is reached before reading the value IOException If any other error occurs
See Also: DataOutput
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.
Returns: The unsigned bytes value read as a Java int
Throws: EOFException If end of file is reached before reading the value IOException If any other error occurs
See Also: DataOutput
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 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.
Returns: The unsigned short value read as a Java int
Throws: EOFException If end of file is reached before reading the value IOException If any other error occurs
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
Returns: The String read
Throws: EOFException If end of file is reached before reading the String UTFDataFormatException If the data is not in UTF-8 format IOException If any other error occurs
See Also: DataOutput
Parameters: pos The offset from the beginning of the file at which to set the file pointer
Throws: IOException If an error occurs
The file must be open for write access for this operation to succeed.
Parameters: newLen The new length of the file
Throws: IOException If an error occurs
Parameters: numBytes The requested number of bytes to skip.
Returns: The number of bytes actually skipped.
Throws: IOException If an error occurs.
Parameters: oneByte The byte of data to write, passed as an int.
Throws: IOException If an error occurs
Parameters: buffer The array of bytes to write to the file
len bytes to the file from the specified
array starting at index offset into the array.
Parameters: buffer The array of bytes to write to the file offset The index into the array to start writing file len The number of bytes to write
Throws: IOException If an error occurs
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.
Parameters: val The boolean value to write to the stream
Throws: IOException If an error occurs
byte value to the underlying
output stream.
Parameters: val The byte to write to the stream, passed
as an int.
Throws: IOException If an error occurs
String out to the
stream. One byte is written for each character in the String.
The high eight bits of each character are discarded.
Parameters: val The String to write to the stream
Throws: IOException If an error occurs
char value to the stream,
high byte first.
Parameters: val The char value to write, passed as
an int.
Throws: IOException If an error occurs
String to the
stream. There will be two bytes for each character value. The high
byte of the character will be written first.
Parameters: val The String to write to the stream.
Throws: IOException If an error occurs
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.
Parameters: val The double precision floating point number to write to the stream.
Throws: IOException If an error occurs
See Also: RandomAccessFile
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.
Parameters: val The floating point number to write to the stream.
Throws: IOException If an error occurs
See Also: RandomAccessFile
int to the stream, high bytes
first. This method requires four bytes to encode the value.
Parameters: val The int value to write to the stream.
Throws: IOException If an error occurs
long to the stream, high bytes
first. This method requires eight bytes to encode the value.
Parameters: val The long value to write to the stream.
Throws: IOException If an error occurs
short to the stream, high byte
first. This method requires two bytes to encode the value.
Parameters: val The short value to write to the stream,
passed as an int.
Throws: IOException If an error occurs
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".
Parameters: val The String to write to the output in UTF format
Throws: IOException If an error occurs