# RandomAccessFile

public class **RandomAccessFile** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
implements [DataOutput](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html) [DataInput](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html) [Closeable](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Closeable.html) 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.

### Public Constructor Summary

|---|---|
|   | [RandomAccessFile](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#RandomAccessFile(java.lang.String,%20java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) mode) Creates a random access file stream to read from, and optionally to write to, a file with the specified name. |
|   | [RandomAccessFile](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#RandomAccessFile(java.io.File,%20java.lang.String))([File](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/File.html) file, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) mode) Creates a random access file stream to read from, and optionally to write to, the file specified by the `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/File.html` argument. |

### Public Method Summary

|---|---|
| void | [close](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#close())() Closes this random access file stream and releases any system resources associated with the stream. |
| final [FileChannel](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html) | [getChannel](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#getChannel())() Returns the unique `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html` object associated with this file. |
| final [FileDescriptor](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileDescriptor.html) | [getFD](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#getFD())() Returns the opaque file descriptor object associated with this stream. |
| long | [getFilePointer](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#getFilePointer())() Returns the current offset in this file. |
| long | [length](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#length())() Returns the length of this file. |
| int | [read](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#read())() Reads a byte of data from this file. |
| int | [read](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#read(byte[]))(byte\[\] b) Reads up to `b.length` bytes of data from this file into an array of bytes. |
| int | [read](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#read(byte[],%20int,%20int))(byte\[\] b, int off, int len) Reads up to `len` bytes of data from this file into an array of bytes. |
| final boolean | [readBoolean](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readBoolean())() Reads a `boolean` from this file. |
| final byte | [readByte](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readByte())() Reads a signed eight-bit value from this file. |
| final char | [readChar](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readChar())() Reads a character from this file. |
| final double | [readDouble](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readDouble())() Reads a `double` from this file. |
| final float | [readFloat](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readFloat())() Reads a `float` from this file. |
| final void | [readFully](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readFully(byte[]))(byte\[\] b) Reads `b.length` bytes from this file into the byte array, starting at the current file pointer. |
| final void | [readFully](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readFully(byte[],%20int,%20int))(byte\[\] b, int off, int len) Reads exactly `len` bytes from this file into the byte array, starting at the current file pointer. |
| final int | [readInt](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readInt())() Reads a signed 32-bit integer from this file. |
| final [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [readLine](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readLine())() Reads the next line of text from this file. |
| final long | [readLong](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readLong())() Reads a signed 64-bit integer from this file. |
| final short | [readShort](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readShort())() Reads a signed 16-bit number from this file. |
| final [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [readUTF](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readUTF())() Reads in a string from this file. |
| final int | [readUnsignedByte](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readUnsignedByte())() Reads an unsigned eight-bit number from this file. |
| final int | [readUnsignedShort](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readUnsignedShort())() Reads an unsigned 16-bit number from this file. |
| void | [seek](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#seek(long))(long pos) Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs. |
| void | [setLength](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#setLength(long))(long newLength) Sets the length of this file. |
| int | [skipBytes](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#skipBytes(int))(int n) Attempts to skip over `n` bytes of input discarding the skipped bytes. |
| void | [write](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#write(byte[]))(byte\[\] b) Writes `b.length` bytes from the specified byte array to this file, starting at the current file pointer. |
| void | [write](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#write(byte[],%20int,%20int))(byte\[\] b, int off, int len) Writes `len` bytes from the specified byte array starting at offset `off` to this file. |
| void | [write](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#write(int))(int b) Writes the specified byte to this file. |
| final void | [writeBoolean](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeBoolean(boolean))(boolean v) Writes a `boolean` to the file as a one-byte value. |
| final void | [writeByte](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeByte(int))(int v) Writes a `byte` to the file as a one-byte value. |
| final void | [writeBytes](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeBytes(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s) Writes the string to the file as a sequence of bytes. |
| final void | [writeChar](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeChar(int))(int v) Writes a `char` to the file as a two-byte value, high byte first. |
| final void | [writeChars](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeChars(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s) Writes a string to the file as a sequence of characters. |
| final void | [writeDouble](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeDouble(double))(double v) 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. |
| final void | [writeFloat](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeFloat(float))(float v) 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. |
| final void | [writeInt](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeInt(int))(int v) Writes an `int` to the file as four bytes, high byte first. |
| final void | [writeLong](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeLong(long))(long v) Writes a `long` to the file as eight bytes, high byte first. |
| final void | [writeShort](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeShort(int))(int v) Writes a `short` to the file as two bytes, high byte first. |
| final void | [writeUTF](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeUTF(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) str) Writes a string to the file using [modified UTF-8](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput#modified-utf-8) encoding in a machine-independent manner. |

### Protected Method Summary

|---|---|
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

From interface [java.io.DataOutput](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html)

|---|---|
| abstract void | [write](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#write(byte[]))(byte\[\] b) Writes to the output stream all the bytes in array `b`. |
| abstract void | [write](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#write(byte[],%20int,%20int))(byte\[\] b, int off, int len) Writes `len` bytes from array `b`, in order, to the output stream. |
| abstract void | [write](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#write(int))(int b) Writes to the output stream the eight low-order bits of the argument `b`. |
| abstract void | [writeBoolean](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeBoolean(boolean))(boolean v) Writes a `boolean` value to this output stream. |
| abstract void | [writeByte](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeByte(int))(int v) Writes to the output stream the eight low- order bits of the argument `v`. |
| abstract void | [writeBytes](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeBytes(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s) Writes a string to the output stream. |
| abstract void | [writeChar](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeChar(int))(int v) Writes a `char` value, which is comprised of two bytes, to the output stream. |
| abstract void | [writeChars](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeChars(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s) Writes every character in the string `s`, to the output stream, in order, two bytes per character. |
| abstract void | [writeDouble](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeDouble(double))(double v) Writes a `double` value, which is comprised of eight bytes, to the output stream. |
| abstract void | [writeFloat](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeFloat(float))(float v) Writes a `float` value, which is comprised of four bytes, to the output stream. |
| abstract void | [writeInt](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeInt(int))(int v) Writes an `int` value, which is comprised of four bytes, to the output stream. |
| abstract void | [writeLong](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeLong(long))(long v) Writes a `long` value, which is comprised of eight bytes, to the output stream. |
| abstract void | [writeShort](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeShort(int))(int v) Writes two bytes to the output stream to represent the value of the argument. |
| abstract void | [writeUTF](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataOutput.html#writeUTF(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s) Writes two bytes of length information to the output stream, followed by the [modified UTF-8](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput#modified-utf-8) representation of every character in the string `s`. |

From interface [java.io.DataInput](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html)

|---|---|
| abstract boolean | [readBoolean](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readBoolean())() Reads one input byte and returns `true` if that byte is nonzero, `false` if that byte is zero. |
| abstract byte | [readByte](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readByte())() Reads and returns one input byte. |
| abstract char | [readChar](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readChar())() Reads two input bytes and returns a `char` value. |
| abstract double | [readDouble](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readDouble())() Reads eight input bytes and returns a `double` value. |
| abstract float | [readFloat](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readFloat())() Reads four input bytes and returns a `float` value. |
| abstract void | [readFully](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readFully(byte[]))(byte\[\] b) Reads some bytes from an input stream and stores them into the buffer array `b`. |
| abstract void | [readFully](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readFully(byte[],%20int,%20int))(byte\[\] b, int off, int len) Reads `len` bytes from an input stream. |
| abstract int | [readInt](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readInt())() Reads four input bytes and returns an `int` value. |
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [readLine](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readLine())() Reads the next line of text from the input stream. |
| abstract long | [readLong](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readLong())() Reads eight input bytes and returns a `long` value. |
| abstract short | [readShort](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readShort())() Reads two input bytes and returns a `short` value. |
| abstract [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [readUTF](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readUTF())() Reads in a string that has been encoded using a [modified UTF-8](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile#modified-utf-8) format. |
| abstract int | [readUnsignedByte](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readUnsignedByte())() Reads one input byte, zero-extends it to type `int`, and returns the result, which is therefore in the range `0` through `255`. |
| abstract int | [readUnsignedShort](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#readUnsignedShort())() Reads two input bytes and returns an `int` value in the range `0` through `65535`. |
| abstract int | [skipBytes](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput.html#skipBytes(int))(int n) Makes an attempt to skip over `n` bytes of data from the input stream, discarding the skipped bytes. |

From interface [java.io.Closeable](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Closeable.html)

|---|---|
| abstract void | [close](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Closeable.html#close())() Closes this stream and releases any system resources associated with it. |

From interface [java.lang.AutoCloseable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/AutoCloseable.html)

|---|---|
| abstract void | [close](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/AutoCloseable.html#close())() Closes this resource, relinquishing any underlying resources. |

## Public Constructors

#### public
**RandomAccessFile**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) mode)

Creates a random access file stream to read from, and optionally
to write to, a file with the specified name. A new
`https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileDescriptor.html` 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)](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile#mode) 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.

##### Parameters

| name | the system-dependent filename |
| mode | the access [mode](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile#mode) |
|---|---|

##### Throws

| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if the mode argument is not equal to one of "r", "rw", "rws", or "rwd" |
| [FileNotFoundException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileNotFoundException.html) | 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](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityException.html) | 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 file |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityException.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityManager.html#checkRead(java.lang.String)`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityManager.html#checkWrite(java.lang.String)`

#### public
**RandomAccessFile**
([File](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/File.html) file, [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) mode)

Creates a random access file stream to read from, and optionally to
write to, the file specified by the `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/File.html` argument. A new `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileDescriptor.html` 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:

| Value | Meaning |
|:---|:---|
| "r" | Open for reading only. Invoking any of the write methods of the resulting object will cause an `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html` 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. |

The "rws" and "rwd" modes work much like the `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html#force(boolean)` method of the `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html` 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.

##### Parameters

| file | the file object |
| mode | the access mode, as described [above](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile#mode) |
|---|---|

##### Throws

| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if the mode argument is not equal to one of "r", "rw", "rws", or "rwd" |
| [FileNotFoundException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileNotFoundException.html) | 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](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityException.html) | 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 file |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityManager.html#checkRead(java.lang.String)`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/SecurityManager.html#checkWrite(java.lang.String)`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html#force(boolean)`

## Public Methods

#### public void
**close**
()

Closes this random access file stream and releases any system
resources associated with the stream. A closed random access
file cannot perform input or output operations and cannot be
reopened.

If this file has an associated channel then the channel is closed
as well.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final [FileChannel](https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html)
**getChannel**
()

Returns the unique `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html`
object associated with this file.

The `https://developers.google.com/j2objc/javadoc/jre/reference/java/nio/channels/FileChannel.html#position()` of the returned channel will always be equal to
this object's file-pointer offset as returned by the `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#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.

##### Returns

- the file channel associated with this file

#### public final [FileDescriptor](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileDescriptor.html)
**getFD**
()

Returns the opaque file descriptor object associated with this
stream.

##### Returns

- the file descriptor object associated with this stream.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/FileDescriptor.html`

#### public long
**getFilePointer**
()

Returns the current offset in this file.

##### Returns

- the offset from the beginning of the file, in bytes, at which the next read or write occurs.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public long
**length**
()

Returns the length of this file.

##### Returns

- the length of this file, measured in bytes.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public int
**read**
()

Reads a byte of data from this file. The byte is returned as an
integer in the range 0 to 255 (`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 `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/InputStream.html#read()` method of
`InputStream`.

##### Returns

- the next byte of data, or `-1` if the end of the file has been reached.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. Not thrown if end-of-file has been reached. |
|---|---|

#### public int
**read**
(byte\[\] b)

Reads up to `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 `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/InputStream.html#read(byte[])` method of
`InputStream`.

##### Parameters

| b | the buffer into which the data is read. |
|---|---|

##### Returns

- the total number of bytes read into the buffer, or `-1` if there is no more data because the end of this file has been reached.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | If the first byte cannot be read for any reason other than end of file, or if the random access file has been closed, or if some other I/O error occurs. |
| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | If `b` is `null`. |
|---|---|

#### public int
**read**
(byte\[\] b, int off, int len)

Reads up to `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 `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/InputStream.html#read(byte[],%20int,%20int)` method of
`InputStream`.

##### Parameters

| b | the buffer into which the data is read. |
| off | the start offset in array `b` at which the data is written. |
| len | the maximum number of bytes read. |
|---|---|

##### Returns

- the total number of bytes read into the buffer, or `-1` if there is no more data because the end of the file has been reached.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | If the first byte cannot be read for any reason other than end of file, or if the random access file has been closed, or if some other I/O error occurs. |
| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | If `b` is `null`. |
| [IndexOutOfBoundsException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IndexOutOfBoundsException.html) | If `off` is negative, `len` is negative, or `len` is greater than `b.length - off` |
|---|---|

#### public final boolean
**readBoolean**
()

Reads a `boolean` from this file. This method reads a
single byte from the file, starting at the current file pointer.
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.

##### Returns

- the `boolean` value read.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file has reached the end. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final byte
**readByte**
()

Reads a signed eight-bit value from this file. This method reads a
byte from the file, starting from the current file pointer.
If the byte read is `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.

##### Returns

- the next byte of this file as a signed eight-bit `byte`.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file has reached the end. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final char
**readChar**
()

Reads a character from this file. This method reads two
bytes from the file, starting at the current file pointer.
If the bytes read, in order, are
`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.

##### Returns

- the next two bytes of this file, interpreted as a `char`.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading two bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final double
**readDouble**
()

Reads a `double` from this file. This method reads a
`long` value, starting at the current file pointer,
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.

##### Returns

- the next eight bytes of this file, interpreted as a `double`.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading eight bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readLong()`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Double.html#longBitsToDouble(long)`

#### public final float
**readFloat**
()

Reads a `float` from this file. This method reads an
`int` value, starting at the current file pointer,
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.

##### Returns

- the next four bytes of this file, interpreted as a `float`.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading four bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readInt()`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Float.html#intBitsToFloat(int)`

#### public final void
**readFully**
(byte\[\] b)

Reads `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.

##### Parameters

| b | the buffer into which the data is read. |
|---|---|

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading all the bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**readFully**
(byte\[\] b, int off, int len)

Reads exactly `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.

##### Parameters

| b | the buffer into which the data is read. |
| off | the start offset of the data. |
| len | the number of bytes to read. |
|---|---|

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading all the bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final int
**readInt**
()

Reads a signed 32-bit integer from this file. This method reads 4
bytes from the file, starting at the current file pointer.
If the bytes read, in order, are `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.

##### Returns

- the next four bytes of this file, interpreted as an `int`.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading four bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**readLine**
()

Reads the next line of text from this file. This method successively
reads bytes from the file, starting at the current file pointer,
until it reaches a line terminator or the end
of the file. Each byte is converted into a character by taking the
byte's value for the lower eight bits of the character and setting the
high eight bits of the character to zero. This method does not,
therefore, support the full Unicode character set.

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 file. Line-terminating characters are discarded and
are not 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 file is reached, or an exception is thrown.

##### Returns

- the next line of text from this file, or null if end of file is encountered before even one byte is read.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final long
**readLong**
()

Reads a signed 64-bit integer from this file. This method reads eight
bytes from the file, starting at the current file pointer.
If the bytes read, in order, are
`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.

##### Returns

- the next eight bytes of this file, interpreted as a `long`.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading eight bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final short
**readShort**
()

Reads a signed 16-bit number from this file. The method reads two
bytes from this file, starting at the current file pointer.
If the two bytes read, in order, are
`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.

##### Returns

- the next two bytes of this file, interpreted as a signed 16-bit number.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading two bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**readUTF**
()

Reads in a string from this file. The string has been encoded
using a
[modified UTF-8](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput#modified-utf-8)
format.


The first two bytes are read, starting from the current file
pointer, 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 modified 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.

##### Returns

- a Unicode string.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading all the bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
| [UTFDataFormatException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/UTFDataFormatException.html) | if the bytes do not represent valid modified UTF-8 encoding of a Unicode string. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#readUnsignedShort()`

#### public final int
**readUnsignedByte**
()

Reads an unsigned eight-bit number from this file. This method reads
a byte from this file, starting at the current file pointer,
and returns that byte.


This method blocks until the byte is read, the end of the stream
is detected, or an exception is thrown.

##### Returns

- the next byte of this file, interpreted as an unsigned eight-bit number.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file has reached the end. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final int
**readUnsignedShort**
()

Reads an unsigned 16-bit number from this file. This method reads
two bytes from the file, starting at the current file pointer.
If the bytes read, in order, are
`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.

##### Returns

- the next two bytes of this file, interpreted as an unsigned 16-bit integer.

##### Throws

| [EOFException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/EOFException.html) | if this file reaches the end before reading two bytes. |
| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public void
**seek**
(long pos)

Sets the file-pointer offset, measured from the beginning of this
file, at which the next read or write occurs. The offset may be
set beyond the end of the file. Setting the offset beyond the end
of the file does not change the file length. The file length will
change only by writing after the offset has been set beyond the end
of the file.

##### Parameters

| pos | the offset position, measured in bytes from the beginning of the file, at which to set the file pointer. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if `pos` is less than `0` or if an I/O error occurs. |
|---|---|

#### public void
**setLength**
(long newLength)

Sets the length of this file.

If the present length of the file as returned by the
`length` method is greater than the `newLength`
argument then the file will be truncated. In this case, if the file
offset as returned by the `getFilePointer` method is greater
than `newLength` then after this method returns the offset
will be equal to `newLength`.

If the present length of the file as returned by the
`length` method is smaller than the `newLength`
argument then the file will be extended. In this case, the contents of
the extended portion of the file are not defined.

##### Parameters

| newLength | The desired length of the file |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | If an I/O error occurs |
|---|---|

#### public int
**skipBytes**
(int n)

Attempts to skip over `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.

##### Parameters

| n | the number of bytes to be skipped. |
|---|---|

##### Returns

- the actual number of bytes skipped.

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public void
**write**
(byte\[\] b)

Writes `b.length` bytes from the specified byte array
to this file, starting at the current file pointer.

##### Parameters

| b | the data. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public void
**write**
(byte\[\] b, int off, int len)

Writes `len` bytes from the specified byte array
starting at offset `off` to this file.

##### Parameters

| b | the data. |
| off | the start offset in the data. |
| len | the number of bytes to write. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public void
**write**
(int b)

Writes the specified byte to this file. The write starts at
the current file pointer.

##### Parameters

| b | the `byte` to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeBoolean**
(boolean v)

Writes a `boolean` to the file as a one-byte value. The
value `true` is written out as the value
`(byte)1`; the value `false` is written out
as the value `(byte)0`. The write starts at
the current position of the file pointer.

##### Parameters

| v | a `boolean` value to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeByte**
(int v)

Writes a `byte` to the file as a one-byte value. The
write starts at the current position of the file pointer.

##### Parameters

| v | a `byte` value to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeBytes**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s)

Writes the string to the file as a sequence of bytes. Each
character in the string is written out, in sequence, by discarding
its high eight bits. The write starts at the current position of
the file pointer.

##### Parameters

| s | a string of bytes to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeChar**
(int v)

Writes a `char` to the file as a two-byte value, high
byte first. The write starts at the current position of the
file pointer.

##### Parameters

| v | a `char` value to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeChars**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) s)

Writes a string to the file as a sequence of characters. Each
character is written to the data output stream as if by the
`writeChar` method. The write starts at the current
position of the file pointer.

##### Parameters

| s | a `String` value to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/io/RandomAccessFile.html#writeChar(int)`

#### public final 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 file as an
eight-byte quantity, high byte first. The write starts at the current
position of the file pointer.

##### Parameters

| v | a `double` value to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Double.html#doubleToLongBits(double)`

#### public final 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 file as a
four-byte quantity, high byte first. The write starts at the
current position of the file pointer.

##### Parameters

| v | a `float` value to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Float.html#floatToIntBits(float)`

#### public final void
**writeInt**
(int v)

Writes an `int` to the file as four bytes, high byte first.
The write starts at the current position of the file pointer.

##### Parameters

| v | an `int` to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeLong**
(long v)

Writes a `long` to the file as eight bytes, high byte first.
The write starts at the current position of the file pointer.

##### Parameters

| v | a `long` to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeShort**
(int v)

Writes a `short` to the file as two bytes, high byte first.
The write starts at the current position of the file pointer.

##### Parameters

| v | a `short` to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

#### public final void
**writeUTF**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) str)

Writes a string to the file using
[modified UTF-8](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/DataInput#modified-utf-8)
encoding in a machine-independent manner.


First, two bytes are written to the file, starting at the
current file pointer, 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 modified UTF-8 encoding
for each character.

##### Parameters

| str | a string to be written. |
|---|---|

##### Throws

| [IOException](https://developers.google.com/j2objc/javadoc/jre/reference/java/io/IOException.html) | if an I/O error occurs. |
|---|---|

## Protected Methods

#### protected void
**finalize**
()

Invoked when the garbage collector has detected that this instance is no longer reachable.
The default implementation does nothing, but this method can be overridden to free resources.

Note that objects that override `finalize` are significantly more expensive than
objects that don't. Finalizers may be run a long time after the object is no longer
reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup.
Note also that finalizers are run on a single VM-wide finalizer thread,
so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary
for a class that has a native peer and needs to call a native method to destroy that peer.
Even then, it's better to provide an explicit `close` method (and implement
`https://developers.google.com/j2objc/javadoc/jre/reference/java/io/Closeable.html`), and insist that callers manually dispose of instances. This
works well for something like files, but less well for something like a `BigInteger`
where typical calling code would have to deal with lots of temporaries. Unfortunately,
code that creates lots of temporaries is the worst kind of code from the point of view of
the single finalizer thread.

If you *must* use finalizers, consider at least providing your own
`https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/ReferenceQueue.html` and having your own thread process that queue.

Unlike constructors, finalizers are not automatically chained. You are responsible for
calling `super.finalize()` yourself.

Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer
thread.

See *Effective Java* Item 7, "Avoid finalizers" for more.

##### Throws

| [Throwable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Throwable.html) |   |
|---|---|