|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object![]()
![]()
![]()
java.io.RandomAccessFile
, DataInput
, DataOutput

public class RandomAccessFile

, DataInput
, Closeable

Instances of this class support both reading and writing to a
random access file. A random access file behaves like a large
array of bytes stored in the file system. There is a kind of cursor,
or index into the implied array, called the file pointer;
input operations read bytes starting at the file pointer and advance
the file pointer past the bytes read. If the random access file is
created in read/write mode, then output operations are also available;
output operations write bytes starting at the file pointer and advance
the file pointer past the bytes written. Output operations that write
past the current end of the implied array cause the array to be
extended. The file pointer can be read by the
getFilePointer method and set by the seek
method.
It is generally true of all the reading routines in this class that
if end-of-file is reached before the desired number of bytes has been
read, an EOFException (which is a kind of
IOException) is thrown. If any byte cannot be read for
any reason other than end-of-file, an IOException other
than EOFException is thrown. In particular, an
IOException may be thrown if the stream has been closed.
| Constructor Summary | |
|---|---|
RandomAccessFile
Creates a random access file stream to read from, and optionally to write to, the file specified by the File argument. |
|
RandomAccessFile
Creates a random access file stream to read from, and optionally to write to, a file with the specified name. |
|
| Method Summary | |
|---|---|
void |
close
Closes this random access file stream and releases any system resources associated with the stream. |
FileChannel |
getChannel
Returns the unique FileChannel
object associated with this file. |
FileDescriptor |
getFD
Returns the opaque file descriptor object associated with this stream. |
long |
getFilePointer
Returns the current offset in this file. |
long |
length
Returns the length of this file. |
int |
read
Reads a byte of data from this file. |
int |
read
Reads up to b.length bytes of data from this file
into an array of bytes. |
int |
read
Reads up to len bytes of data from this file into an
array of bytes. |
boolean |
readBoolean
Reads a boolean from this file. |
byte |
readByte
Reads a signed eight-bit value from this file. |
char |
readChar
Reads a Unicode character from this file. |
double |
readDouble
Reads a double from this file. |
float |
readFloat
Reads a float from this file. |
void |
readFully
Reads b.length bytes from this file into the byte
array, starting at the current file pointer. |
void |
readFully
Reads exactly len bytes from this file into the byte
array, starting at the current file pointer. |
int |
readInt
Reads a signed 32-bit integer from this file. |
String |
readLine
Reads the next line of text from this file. |
long |
readLong
Reads a signed 64-bit integer from this file. |
short |
readShort
Reads a signed 16-bit number from this file. |
int |
readUnsignedByte
Reads an unsigned eight-bit number from this file. |
int |
readUnsignedShort
Reads an unsigned 16-bit number from this file. |
String |
readUTF
Reads in a string from this file. |
void |
seek
Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs. |
void |
setLength
Sets the length of this file. |
int |
skipBytes
Attempts to skip over n bytes of input discarding the
skipped bytes. |
void |
write
Writes b.length bytes from the specified byte array
to this file, starting at the current file pointer. |
void |
write
Writes len bytes from the specified byte array
starting at offset off to this file. |
void |
write
Writes the specified byte to this file. |
void |
writeBoolean
Writes a boolean to the file as a one-byte value. |
void |
writeByte
Writes a byte to the file as a one-byte value. |
void |
writeBytes
Writes the string to the file as a sequence of bytes. |
void |
writeChar
Writes a char to the file as a two-byte value, high
byte first. |
void |
writeChars
Writes a string to the file as a sequence of characters. |
void |
writeDouble
Converts the double argument to a long using the
doubleToLongBits method in class Double,
and then writes that long value to the file as an
eight-byte quantity, high byte first. |
void |
writeFloat
Converts the float argument to an int using the
floatToIntBits method in class Float,
and then writes that int value to the file as a
four-byte quantity, high byte first. |
void |
writeInt
Writes an int to the file as four bytes, high byte first. |
void |
writeLong
Writes a long to the file as eight bytes, high byte first. |
void |
writeShort
Writes a short to the file as two bytes, high byte first. |
void |
writeUTF
Writes a string to the file using modified UTF-8 encoding in a machine-independent manner. |
Methods inherited from class java.lang.Object ![]() |
|---|
clone |
| Constructor Detail |
|---|

public RandomAccessFile(String![]()
![]()
name, String
![]()
![]()
mode) throws FileNotFoundException
![]()
![]()
FileDescriptor
object is created to represent the
connection to the file.
The mode argument specifies the access mode with which the file is to be opened. The permitted values and their meanings are as specified for the RandomAccessFile(File,String) constructor.
If there is a security manager, its checkRead method
is called with the name argument
as its argument to see if read access to the file is allowed.
If the mode allows writing, the security manager's
checkWrite method
is also called with the name argument
as its argument to see if write access to the file is allowed.
name - the system-dependent filenamemode - the access mode
IllegalArgumentException

- if the mode argument is not equal
to one of "r", "rw", "rws", or
"rwd"
FileNotFoundException

- if the mode is "r" but the given string does not
denote an existing regular file, or if the mode begins with
"rw" but the given string does not denote an
existing, writable regular file and a new regular file of
that name cannot be created, or if some other error occurs
while opening or creating the file
SecurityException

- if a security manager exists and its
checkRead method denies read access to the file
or the mode is "rw" and the security manager's
checkWrite method denies write access to the fileSecurityException
,
SecurityManager.checkRead(java.lang.String)
,
SecurityManager.checkWrite(java.lang.String)


public RandomAccessFile(File![]()
![]()
file, String
![]()
![]()
mode) throws FileNotFoundException
![]()
![]()
File
argument. A new FileDescriptor
object is created to represent this file connection.
The mode argument specifies the access mode in which the file is to be opened. The permitted values and their meanings are:
The "rws" and "rwd" modes work much like the
Value
Meaning
"r" Open for reading only. Invoking any of the write methods of the resulting object will cause an IOException![]()
![]()
to be thrown.
"rw" Open for reading and writing. If the file does not already exist then an attempt will be made to create it. "rws" Open for reading and writing, as with "rw", and also require that every update to the file's content or metadata be written synchronously to the underlying storage device. "rwd" Open for reading and writing, as with "rw", and also require that every update to the file's content be written synchronously to the underlying storage device.
force(boolean)
method of
the FileChannel
class, passing arguments of
true and false, respectively, except that they always
apply to every I/O operation and are therefore often more efficient. If
the file resides on a local storage device then when an invocation of a
method of this class returns it is guaranteed that all changes made to
the file by that invocation will have been written to that device. This
is useful for ensuring that critical information is not lost in the
event of a system crash. If the file does not reside on a local device
then no such guarantee is made.
The "rwd" mode can be used to reduce the number of I/O operations performed. Using "rwd" only requires updates to the file's content to be written to storage; using "rws" requires updates to both the file's content and its metadata to be written, which generally requires at least one more low-level I/O operation.
If there is a security manager, its checkRead method is
called with the pathname of the file argument as its
argument to see if read access to the file is allowed. If the mode
allows writing, the security manager's checkWrite method is
also called with the path argument to see if write access to the file is
allowed.
file - the file objectmode - the access mode, as described
above
IllegalArgumentException

- if the mode argument is not equal
to one of "r", "rw", "rws", or
"rwd"
FileNotFoundException

- if the mode is "r" but the given file object does
not denote an existing regular file, or if the mode begins
with "rw" but the given file object does not denote
an existing, writable regular file and a new regular file of
that name cannot be created, or if some other error occurs
while opening or creating the file
SecurityException

- if a security manager exists and its
checkRead method denies read access to the file
or the mode is "rw" and the security manager's
checkWrite method denies write access to the fileSecurityManager.checkRead(java.lang.String)
,
SecurityManager.checkWrite(java.lang.String)
,
FileChannel.force(boolean)

| Method Detail |
|---|

public final FileDescriptor![]()
![]()
getFD() throws IOException
![]()
![]()
IOException

- if an I/O error occurs.FileDescriptor


public final FileChannel![]()
![]()
getChannel()
FileChannel
object associated with this file.
The position
of the returned channel will always be equal to
this object's file-pointer offset as returned by the getFilePointer
method. Changing this object's
file-pointer offset, whether explicitly or by reading or writing bytes,
will change the position of the channel, and vice versa. Changing the
file's length via this object will change the length seen via the file
channel, and vice versa.

public int read()
throws IOException

0x00-0x0ff). This
method blocks if no input is yet available.
Although RandomAccessFile is not a subclass of
InputStream, this method behaves in exactly the same
way as the InputStream.read()
method of
InputStream.
-1 if the end of the
file has been reached.
IOException

- if an I/O error occurs. Not thrown if
end-of-file has been reached.

public int read(byte[] b,
int off,
int len)
throws IOException

len bytes of data from this file into an
array of bytes. This method blocks until at least one byte of input
is available.
Although RandomAccessFile is not a subclass of
InputStream, this method behaves in exactly the
same way as the InputStream.read(byte[], int, int)
method of
InputStream.
b - the buffer into which the data is read.off - the start offset of the data.len - the maximum number of bytes read.
-1 if there is no more data because the end of
the file has been reached.
IOException

- if an I/O error occurs.

public int read(byte[] b)
throws IOException

b.length bytes of data from this file
into an array of bytes. This method blocks until at least one byte
of input is available.
Although RandomAccessFile is not a subclass of
InputStream, this method behaves in exactly the
same way as the InputStream.read(byte[])
method of
InputStream.
b - the buffer into which the data is read.
-1 if there is no more data because the end of
this file has been reached.
IOException

- if an I/O error occurs.

public final void readFully(byte[] b)
throws IOException

b.length bytes from this file into the byte
array, starting at the current file pointer. This method reads
repeatedly from the file until the requested number of bytes are
read. This method blocks until the requested number of 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 file reaches the end before reading
all the bytes.
IOException

- if an I/O error occurs.

public final void readFully(byte[] b,
int off,
int len)
throws IOException

len bytes from this file into the byte
array, starting at the current file pointer. This method reads
repeatedly from the file until the requested number of bytes are
read. This method blocks until the requested number of 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 file 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 discarding the
skipped bytes.
This method may skip over some smaller number of bytes, possibly zero.
This may result from any of a number of conditions; reaching end of
file before n bytes have been skipped is only one
possibility. This method never throws an EOFException.
The actual number of bytes skipped is returned. If n
is negative, no bytes are skipped.
skipBytes

in interface DataInput

n - the number of bytes to be skipped.
IOException

- if an I/O error occurs.

public void write(int b)
throws IOException

write

in interface DataOutput

b - the byte to be written.
IOException

- if an I/O error occurs.

public void write(byte[] b)
throws IOException

b.length bytes from the specified byte array
to this file, starting at the current file pointer.
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 file.
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 long getFilePointer()
throws IOException

IOException

- if an I/O error occurs.

public void seek(long pos)
throws