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