当前位置 类层次(JDK) 所有类(JDK) 所有域和方法(JDK)

类 java.io.RandomAccessFile

java.lang.Object
   |
   +----java.io.RandomAccessFile

public class RandomAccessFile
extends Object
implements DataOutput, DataInput

这个类的实例支持对随机存储文件的读和写操作。一个应用程序可以修改文件中的下一个读写位置。这个类通过提供指定的只读或只写访问模式,可以支持对文件的安全访问。


构造子索引

RandomAccessFile(File, String)
创建一个随机存储的文件流来随机读(或读写) 由 File 参数指定的文件。
RandomAccessFile(String, String)
创建一个随机存储的文件流来随机读(或读写) 由给定名对应的文件。

方法索引

close()
关闭当前随机存储文件流,并释放与它相关的任一系统资源。
getFD()
返回与当前流相关的不透明的文件描述符。
getFilePointer()
返回此文件中的当前偏移。
length()
返回当前文件的长度。
read()
从当前文件中读取一字节数据。
read(byte[])
将当前文件中 b.length 个字节数据读到一个字节数组中。
read(byte[], int, int)
将当前文件中 len 个字节数据读入一个字节数组中。
readBoolean()
从当前文件中读一个 boolean 值。
readByte()
从当前文件中读一个有符号的 8 位数。
readChar()
从当前文件中读取一个 Unicode 字符。
readDouble()
从当前文件中读一个 double 值。
readFloat()
从当前文件中读一个 float 值。
readFully(byte[])
从当前文件中读取 b.length 个字节到给定数组。
readFully(byte[], int, int)
从当前文件中恰好读取 len 个字节到给定数组。
readInt()
从当前文件中读取一个有符号的 32 位整数。
readLine()
从当前文件中读取文本的下一行。
readLong()
从当前文件中读取一个有符号的 64 位整数。
readShort()
从当前文件中读取一个有符号的 16 位整数。
readUnsignedByte()
从当前文件中读取一个无符号的 8 位数。
readUnsignedShort()
从当前文件中读取一个无符号的 16 位数。
readUTF()
从当前文件中读取一个串。
seek(long)
设置相对文件头的指针偏移量,在此位置进行下一次读写操作。
skipBytes(int)
准确地跳过n 字节输入。
write(byte[])
将指定字节数组中以偏移量 off 开始的 b.length 字节写入当前文件。
write(byte[], int, int)
将指定字节数组中以偏移量 off 开始的 len个字节写入当前文件。
write(int)
将指定字节写入当前文件。
writeBoolean(boolean)
将一 boolean 作为一字节值,写入该文件。
writeByte(int)
将一 byte 作为一字节值,写入该文件。
writeBytes(String)
将此串作为一个字节序列写入该文件。
writeChar(int)
将一 char 作为 2 字节值,写入该文件。
writeChars(String)
将一个串作为一个字节序列写入该文件。
writeDouble(double)
使用类 DoubledoubleToLongBits 方法,将给定的双精度浮点数转换为 long 值,然后将它当作一个 8 字节数写入该文件,高字节优先。
writeFloat(float)
使用类 FloatfloatToIntBits 方法,将给定的单精度浮点数转换为 int 值,然后将它当作一个 4 字节数写入该文件,高字节优先。
writeInt(int)
将一个 int 作为 4 字节数写入该文件,高字节优先。
writeLong(long)
将一个 long 作为 8 字节数写入该文件,高字节优先。
writeShort(int)
将一个 short 作为 2 字节数写入该文件,高字节优先。
writeUTF(String)
使用独立于机器的 UTF-8 编码格式,将一个串写入该文件。

构造子

RandomAccessFile
 public RandomAccessFile(String name,
                         String mode) throws IOException
创建一个随机存储的文件流来随机读(或读写) 由给定名称指定的文件。

参数 mode 必须等于"r""rw", 表示打开的文件可读或可读写。

参数:
name - 与系统有关的文件名。
mode - 访问方式。
抛出: IllegalArgumentException
如果参数 mode 不等于"r""rw"
抛出: IOException
如果发生一个 I/O 错误。
抛出: SecurityException
如果有一个安全管理器,则用给定的参数名调用 checkRead 方法,查看是否允许应用程序读该文件。如果参数 mode 等于 "rw", 则还将用参数给定的文件名调用 checkWrite 方法,查看是否允许此应用程序写该文件。这两种情况都可能导致一个安全性异常。
参见:
SecurityException, checkRead
RandomAccessFile
 public RandomAccessFile(File file,
                         String mode) throws IOException
创建一个随机存储的文件流来随机读(或读写) 由 File 参数指定的文件。

参数 mode 必须等于 "r""rw", 表示相应打开的文件可读或可读写。

参数:
file - 文件对象。
mode - 访问方式。
抛出: IllegalArgumentException
如果参数 mode 不等于 "r""rw"
抛出: IOException
如果发生一个 I/O 错误。
抛出: SecurityException
如果有一个安全管理器,则用参数 File 给定的路径名调用 checkRead 方法,查看是否允许此应用程序读该文件。 如果参数 mode 等于 "rw", 则还将用路径名调用 checkWrite 方法,查看是否允许此应用程序写该文件。
参见:
getPath, checkRead

方法

getFD
 public final FileDescriptor getFD() throws IOException
返回与当前流相关的不透明的文件描述符。

返回值:
与当前流相关的不透明的文件描述符。
抛出: IOException
如果发生一个 I/O 错误。
参见:
FileDescriptor
read
 public native int read() throws IOException
从当前文件中读取一字节数据。 如果没有输入数据则该方法将阻塞。

返回值:
数据的下一个字节;若已读到流尾则为 -1
抛出: IOException
如果发生一个 I/O 错误。
read
 public int read(byte b[],
                   int off,
                 int len) throws IOException
将当前文件中 len 个字节数据读入一个字节数组中。 此方法将阻塞,直到至少有一个字节输入。

参数:
b - 读取数据的缓冲区。
off - 读取数据的起始偏移。
len - 读取的最大字节数。
返回值:
读到缓存区的整个字节数;如果读到流尾不再有数据可读则为 -1
抛出: IOException
如果发生一个 I/O 错误。
read
 public int read(byte b[]) throws IOException
将当前文件中 b.length 个字节数据读到一个字节数组中。 此方法将阻塞,直到至少有一字节输入。

参数:
b - 读取数据的缓冲区。
返回值:
读到缓存区的总的字节数;如果读到流尾不再有数据可读则为 -1
抛出: IOException
如果发生一个 I/O 错误。
readFully
 public final void readFully(byte b[]) throws IOException
从当前文件中读取 b.length 个字节到给定数组。 这个方法将重复读,直到读入所有的字节。该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

参数:
b - 读取数据的缓冲区。
抛出: EOFException
如果在读入所有的字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readFully
 public final void readFully(byte b[],
                   int off,
                 int len) throws IOException
从当前文件中恰好读取 len 个字节到给定数组。 这个方法将重复读,直到读入所有的字节。该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

参数:
b - 读取数据的缓冲区。
off - 读取数据的起始偏移。
len - 待读入的字节数。
抛出: EOFException
如果在读入所有的字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
skipBytes
 public int skipBytes(int n) throws IOException
准确地跳过 n 字节输入。

该方法将一直阻塞,直到所有的字节数据被跳过,或检测到了数据流尾或抛出异常。

参数:
n - 跳过的字节数。
返回值:
跳过的字节数,总为 n
抛出: EOFException
如果在跳过所有的字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
write
 public native void write(int b) throws IOException
将指定字节写入当前文件。

参数:
b - 输出的字节
抛出: IOException
如果发生一个 I/O 错误。
write
 public void write(byte b[]) throws IOException
将指定字节数组中以偏移量 off 开始的 b.length 字节写入当前文件。

参数:
b - 数据。
抛出: IOException
如果发生一个 I/O 错误。
write
 public void write(byte b[],
                   int off,
                 int len) throws IOException
将指定字节数组中以偏移量 off 开始的 len 个字节写入当前文件。

参数:
b - 数据。
off - 数据的起始偏移。
len - 写入的字节数。
抛出: IOException
如果发生一个 I/O 错误。
getFilePointer
 public native long getFilePointer() throws IOException
返回此文件中的当前偏移。

返回值:
相对文件头的偏移量,以字节计算,在此位置进行下一次读写操作。
抛出: IOException
如果发生一个 I/O 错误。
seek
 public native void seek(long pos) throws IOException
设置相对文件头的指针偏移量,在此位置进行下一次读写操作。 设置的偏移可能超过该文件尾。设置超过该文件尾的偏移不改变文件长度。 在设置了超过文件尾的偏移之后,仅通过写入数据才能改变该文件长度。

参数:
pos - 从文件头开始的偏移位置,将文件指针设置在此处。
抛出: IOException
如果发生一个 I/O 错误。
length
 public native long length() throws IOException
返回当前文件的长度。

返回值:
当前文件的长度。
抛出: IOException
如果发生一个 I/O 错误。
close
 public native void close() throws IOException
关闭当前随机存储文件流,并释放与它相关的任一系统资源。

抛出: IOException
如果发生一个 I/O 错误。
readBoolean
 public final boolean readBoolean() throws IOException
从当前文件中读一个 boolean 值。 此方法从该文件中读入一个单一字节。 0 表示 false。任一其它值表示 true 。该方法将一直阻塞,直到此字节被读入,或检测到了数据流尾或抛出异常。

返回值:
读入的 boolean 值。
抛出: EOFException
如果当前文件已到达文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readByte
 public final byte readByte() throws IOException
从当前文件中读一个有符号的 8 位数。 此方法从该文件中读入一个字节。 如果读入的字节是 b, 且 0 <= b <= 255, 那么结果是:

该方法将一直阻塞,直到此字节被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的作为一个有符号 8 位byte 的下一个字节。
抛出: EOFException
如果当前文件已到达文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readUnsignedByte
 public final int readUnsignedByte() throws IOException
从当前文件中读取一个无符号的 8 位数。 此方法从该文件中读入一个字节,并返回它。

该方法将一直阻塞,直到此字节被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下一个字节,解释为一个无符号的 8 位数。
抛出: EOFException
如果当前文件已到达文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readShort
 public final short readShort() throws IOException
从当前文件中读取一个有符号的 16 位整数。 此方法从该文件中读入 2 个字节。如果读入的两个字节,顺序为 b1b2, 均在 0255 之间, 那么结果等于:

该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下两个字节,解释为一个有符号的 16 位数。
抛出: EOFException
如果在读入两个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readUnsignedShort
 public final int readUnsignedShort() throws IOException
从当前文件中读取一个无符号的 16 位数。 此方法从该文件中读入两个字节。如果读入的两个字节,顺序为 b1b2, 满足 0 <= b1, b2 <= 255, 那么结果等于:

该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下两个字节,解释为一个无符号的 16 位数。
抛出: EOFException
如果在读入两个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readChar
 public final char readChar() throws IOException
从当前文件中读取一个 Unicode 字符。 此方法从该文件中读入两个字节。 如果读入的字节,顺序为 b1b2, 满足 0 <= b1, b2 <= 255, 那么结果等于:

该方法将一直阻塞,直到此两个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下两个字节,作为一个 Unicode 字符。
抛出: EOFException
如果在读入两个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readInt
 public final int readInt() throws IOException
从当前文件中读取一个有符号的 32 位整数。 此方法从该文件中读入四个字节。 如果读入的字节,顺序为 b1b2,b3b4, 满足 0 <= b1, b2,b3,b4 <= 255, 那么结果等于:

该方法将一直阻塞,直到此四个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下四个字节,解释为一个整型数。
抛出: EOFException
如果在读入四个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readLong
 public final long readLong() throws IOException
从当前文件中读取一个有符号的 64 位整数。 此方法从该文件中读入八个字节。 如果读入的字节,顺序为 b1, b2, b3, b4, b5, b6, b7, 和 b8,当:

相应的结果等于:

     ((long)b1 << 56) + ((long)b2 << 48)
     + ((long)b3 << 40) + ((long)b4 << 32)
     + ((long)b5 << 24) + ((long)b6 << 16)
     + ((long)b7 << 8) + b8
 

该方法将一直阻塞,直到此八个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下八个字节,解释为一个长整型数。
抛出: EOFException
如果在读入八个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
readFloat
 public final float readFloat() throws IOException
从当前文件中读一个 float 值。 这个方法与 readInt 方法一样读取一个 int 值,然后使用类 FloatintBitsToFloat 方法将这个 int 转换为一个 float 值。

该方法将一直阻塞,直到此四个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下四个字节,解释为一个浮点数。
抛出: EOFException
如果在读入四个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
参见:
readInt, intBitsToFloat
readDouble
 public final double readDouble() throws IOException
从当前文件中读一个 double 值。 这个方法同 readLong 方法一样读取一个 long 值,然后使用类 Double 中的 longBitsToDouble 方法将这个 long 转换为一个 double

该方法将一直阻塞,直到此八个字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件的下八个字节,解释为一个双精度浮点数。
抛出: EOFException
如果在读入八个字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
参见:
readLong, longBitsToDouble
readLine
 public final String readLine() throws IOException
从当前文件中读取文本的下一行。 这个方法连续地读取字节直到一个文本行的末尾。

一个文本行结束于一个回车符('\r'), 一个换行符 ('\n'), 一个回车符紧跟一个换行符或输入流的末尾。如果有行结束符,则它将作为返回串的一部分。

该方法将一直阻塞,直到一个换行符、或一个回车符、或紧跟回车符的换行符被读入,或检测到了数据流尾或抛出异常。

返回值:
当前文件中文本的下一行。
抛出: IOException
如果发生一个 I/O 错误。
readUTF
 public final String readUTF() throws IOException
从当前文件中读取一个串。 这个串已用“修订的 UTF-8 格式”编码。

前两个字节以同 readUnsignedShort 方法一样的机制被读入。这个值给出了编码字符串中下面的字节数,不是结果串的长度。然后下面的字节被解释为用 UTF-8 格式编码字符的字节,且转换为字符。

该方法将一直阻塞,直到所有的字节数据被读入,或检测到了数据流尾或抛出异常。

返回值:
一个 Unicode 串。
抛出: EOFException
如果在读入所有的字节前到达了文件尾。
抛出: IOException
如果发生一个 I/O 错误。
抛出: UTFDataFormatException
如果此字节不表示一个 Unicode 串的合法 UTF-8 编码。
参见:
readUnsignedShort
writeBoolean
 public final void writeBoolean(boolean v) throws IOException
将一 boolean 作为一字节值,写入该文件。 值 true 被输出为值 (byte)1;值 false 被输出为值 (byte)0

参数:
v - 输出的 boolean 值。
抛出: IOException
如果发生一个 I/O 错误。
writeByte
 public final void writeByte(int v) throws IOException
将一byte作为一字节值,写入该文件。

参数:
v - 输出的byte值。
抛出: IOException
如果发生一个 I/O 错误。
writeShort
 public final void writeShort(int v) throws IOException
将一个 short 作为 2 字节数写入该文件,高字节优先。

参数:
v - 输出的short
抛出: IOException
如果发生一个 I/O 错误。
writeChar
 public final void writeChar(int v) throws IOException
将一 char 作为 2 字节值,写入该文件。

参数:
v - 输出的 char 值。
抛出: IOException
如果发生一个 I/O 错误。
writeInt
 public final void writeInt(int v) throws IOException
将一个 int 作为 4 字节数写入该文件,高字节优先。

参数:
v - 输出的 int 值。
抛出: IOException
如果发生一个 I/O 错误。
writeLong
 public final void writeLong(long v) throws IOException
将一个 long 作为 8 字节数写入该文件,高字节优先。

参数:
v - 输出的 long
抛出: IOException
如果发生一个 I/O 错误。
writeFloat
 public final void writeFloat(float v) throws IOException
使用类 FloatfloatToIntBits 方法,将给定的单精度浮点数转换为 int 值,然后将它当作一个 4 字节数写入该文件,高字节优先。

参数:
v - 输出的 float值。
抛出: IOException
如果发生一个 I/O 错误。
参见:
floatToIntBits
writeDouble
 public final void writeDouble(double v) throws IOException
使用类 DoubledoubleToLongBits 方法,将给定的双精度浮点数转换为 long 值,然后将它当作一个 8 字节数写入该文件,高字节优先。

参数:
v - 输出的 double 值。
抛出: IOException
如果发生一个 I/O 错误。
参见:
doubleToLongBits
writeBytes
 public final void writeBytes(String s) throws IOException
将此串作为一个字节序列写入该文件。 依次输出该串的每个字符,丢掉高八位。

参数:
s - 输出的字节串。
抛出: IOException
如果发生一个 I/O 错误。
writeChars
 public final void writeChars(String s) throws IOException
将一个串作为一个字节序列写入该文件。 同 writeChar 方法一样把每个字符写到数据输出流。

参数:
s - 输出的 String 值。
抛出: IOException
如果发生一个 I/O 错误。
参见:
writeChar
writeUTF
 public final void writeUTF(String str) throws IOException
使用独立于机器的 UTF-8 编码格式,将一个串写入该文件。

开始输出到文件中的两个字节同 writeShort 方法一样,给出下面的字节数。这个值是实际输出的字节数。这个值之后,依次输出的每个字符使用 UTF-8 编码。

参数:
str - 输出的一个字符串。
抛出: IOException
如果发生一个 I/O 错误。

当前位置 类层次(JDK) 所有类(JDK) 所有域和方法(JDK)