JAVA中RandomAccessFile类的用法

JAVA中RandomAccessFile类的用法

JAVA中RandomAccessFile类的用法


首先RandomAccessFile在java.io包中。它提供了对文件的指定位置进行访问等功能。可以利用它对像的skipBytes(count)方法和seek(count)法进行随意的访问文件的任何位置。

下面是一个例子:

package lesson.io.test;

import java.io.*;

public class TestRandomAccessFile

{

public static void main(String[] args)

{

try{

String pth=”c:\\test.txt”;

File file=new File(pth);

if(!file.exists())

{

file.createNewFile();

}

RandomAccessFile Acc=new RandomAccessFile(file, “rw”);

Acc.write(“我是宋兴柱,这里正在做一个小测试!my name is songxingzhu!”.getBytes());

RandomAccessFile red=new RandomAccessFile(file,”r”);

red.seek(34);//转到第34个字节上

System.out.println(red.readLine());

//这样读出来的只有英文了

//想要读中文怎么办?

red.seek(0);

byte[] bys=new byte[1024];

red.read(bys, 0, 34);

System.out.println(new String(bys).trim());

} catch (FileNotFoundException e)

{ e.printStackTrace(); System.out.println(“file read exception !”); }

catch (IOException e)

{ e.printStackTrace(); System.out.println(“IOException !”); }

}

}

效果图如下:

下面附录一些:

java.io

类 RandomAccessFile

[java.lang.Object](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")
  





**java.io.RandomAccessFile**

所有已实现的接口:

[Closeable](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口"), [DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口"), [DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")

public class **RandomAccessFile** extends [Object](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")implements [DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口"), [DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口"), [Closeable](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为
文件指针
;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过
getFilePointer 方法读取,并通过 seek 方法设置。

通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种
IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是
EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException

从以下版本开始:

 JDK1.0

构造方法摘要

**[RandomAccessFile](http://www.cnblogs.com/songxingzhu/admin/)**([File](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类") file, [String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件由
File 参数指定。
**[RandomAccessFile](http://www.cnblogs.com/songxingzhu/admin/)**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") name, [String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

方法摘要

void | **[close](http://www.cnblogs.com/songxingzhu/admin/)**()
关闭此随机访问文件流并释放与该流关联的所有系统资源。
[FileChannel](http://www.cnblogs.com/songxingzhu/admin/ "java.nio.channels 中的类") | **[getChannel](http://www.cnblogs.com/songxingzhu/admin/)**()
返回与此文件关联的唯一 FileChannel 对象。
[FileDescriptor](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类") | **[getFD](http://www.cnblogs.com/songxingzhu/admin/)**()
返回与此流关联的不透明文件描述符对象。
long | **[getFilePointer](http://www.cnblogs.com/songxingzhu/admin/)**()
返回此文件中的当前偏移量。
long | **[length](http://www.cnblogs.com/songxingzhu/admin/)**()
返回此文件的长度。
int | **[read](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件中读取一个数据字节。
int | **[read](http://www.cnblogs.com/songxingzhu/admin/)**(byte[] b)
将最多 b.length 个数据字节从此文件读入 byte 数组。
int | **[read](http://www.cnblogs.com/songxingzhu/admin/)**(byte[] b, int off, int len)
将最多 len 个数据字节从此文件读入 byte 数组。
boolean | **[readBoolean](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个 boolean
byte | **[readByte](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个有符号的八位值。
char | **[readChar](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个字符。
double | **[readDouble](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个 double
float | **[readFloat](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个 float
void | **[readFully](http://www.cnblogs.com/songxingzhu/admin/)**(byte[] b)
b.length 个字节从此文件读入 byte 数组,并从当前文件指针开始。
void | **[readFully](http://www.cnblogs.com/songxingzhu/admin/)**(byte[] b, int off, int len)
将正好 len 个字节从此文件读入 byte 数组,并从当前文件指针开始。
int | **[readInt](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个有符号的 32 位整数。
[String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") | **[readLine](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取文本的下一行。
long | **[readLong](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个有符号的 64 位整数。
short | **[readShort](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个有符号的 16 位数。
int | **[readUnsignedByte](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个无符号的八位数。
int | **[readUnsignedShort](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个无符号的 16 位数。
[String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") | **[readUTF](http://www.cnblogs.com/songxingzhu/admin/)**()
从此文件读取一个字符串。
void | **[seek](http://www.cnblogs.com/songxingzhu/admin/)**(long pos)
设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
void | **[setLength](http://www.cnblogs.com/songxingzhu/admin/)**(long newLength)
设置此文件的长度。
int | **[skipBytes](http://www.cnblogs.com/songxingzhu/admin/)**(int n)
尝试跳过输入的 n 个字节以丢弃跳过的字节。
void | **[write](http://www.cnblogs.com/songxingzhu/admin/)**(byte[] b)
b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。
void | **[write](http://www.cnblogs.com/songxingzhu/admin/)**(byte[] b, int off, int len)
len 个字节从指定 byte 数组写入到此文件,并从偏移量 off 处开始。
void | **[write](http://www.cnblogs.com/songxingzhu/admin/)**(int b)
向此文件写入指定的字节。
void | **[writeBoolean](http://www.cnblogs.com/songxingzhu/admin/)**(boolean v)
按单字节值将 boolean 写入该文件。
void | **[writeByte](http://www.cnblogs.com/songxingzhu/admin/)**(int v)
按单字节值将 byte 写入该文件。
void | **[writeBytes](http://www.cnblogs.com/songxingzhu/admin/)**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") s)
按字节序列将该字符串写入该文件。
void | **[writeChar](http://www.cnblogs.com/songxingzhu/admin/)**(int v)
按双字节值将 char 写入该文件,先写高字节。
void | **[writeChars](http://www.cnblogs.com/songxingzhu/admin/)**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") s)
按字符序列将一个字符串写入该文件。
void | **[writeDouble](http://www.cnblogs.com/songxingzhu/admin/)**(double v)
使用 Double 类中的 doubleToLongBits 方法将双精度参数转换为一个 long,然后按八字节数量将该 long
值写入该文件,先定高字节。
void | **[writeFloat](http://www.cnblogs.com/songxingzhu/admin/)**(float v)
使用 Float 类中的 floatToIntBits 方法将浮点参数转换为一个 int,然后按四字节数量将该 int
值写入该文件,先写高字节。
void | **[writeInt](http://www.cnblogs.com/songxingzhu/admin/)**(int v)
按四个字节将 int 写入该文件,先写高字节。
void | **[writeLong](http://www.cnblogs.com/songxingzhu/admin/)**(long v)
按八个字节将 long 写入该文件,先写高字节。
void | **[writeShort](http://www.cnblogs.com/songxingzhu/admin/)**(int v)
按两个字节将 short 写入该文件,先写高字节。
void | **[writeUTF](http://www.cnblogs.com/songxingzhu/admin/)**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") str)
使用 modified UTF-8
编码以与机器无关的方式将一个字符串写入该文件。

从类 java.lang.Object 继承的方法

[clone](http://www.cnblogs.com/songxingzhu/admin/), [equals](http://www.cnblogs.com/songxingzhu/admin/), [finalize](http://www.cnblogs.com/songxingzhu/admin/), [getClass](http://www.cnblogs.com/songxingzhu/admin/), [hashCode](http://www.cnblogs.com/songxingzhu/admin/), [notify](http://www.cnblogs.com/songxingzhu/admin/), [notifyAll](http://www.cnblogs.com/songxingzhu/admin/), [toString](http://www.cnblogs.com/songxingzhu/admin/), [wait](http://www.cnblogs.com/songxingzhu/admin/), [wait](http://www.cnblogs.com/songxingzhu/admin/), [wait](http://www.cnblogs.com/songxingzhu/admin/)

构造方法详细信息

RandomAccessFile

public **RandomAccessFile**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") name,
                        [String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") mode)
                 throws [FileNotFoundException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。将创建一个新的 [`FileDescriptor`](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")对象来表示到文件的连接。 

mode 参数指定用以打开文件的访问模式。允许的值及其含意如
RandomAccessFile(File,String)
构造方法所指定的那样。

如果存在安全管理器,则使用 name 作为其参数调用其 checkRead 方法,以查看是否允许对该文件进行读取访问。如果该模式允许写入,那么还使用
name 作为安全管理器的参数来调用其 checkWrite 方法,以查看是否允许对该文件进行写入访问。

参数:

`name` \- 取决于系统的文件名
`mode` \- 此访问 [mode](http://www.cnblogs.com/songxingzhu/admin/)

抛出:

`[IllegalArgumentException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果此模式参数与 `"r"`、`"rw"`、`"rws"` 或 `"rwd"` 的其中一个不相等
`[FileNotFoundException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果该模式为 `"r"`,但给定的字符串表示一个现有的常规文件,或者该模式以 `"rw"` 开头,但给定的字符串不表示一个现有的可写常规文件,而且无法创建具有该名称的新常规文件,或者在打开或创建该文件时发生一些其他错误
`[SecurityException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果存在安全管理器,并且其 `checkRead` 方法拒绝对该文件的读取访问,或者该模式为 "rw",并且该安全管理器的 `checkWrite` 方法拒绝对该文件的写入访问

另请参见:

[`SecurityException`](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类"), [`SecurityManager.checkRead(java.lang.String)`](http://www.cnblogs.com/songxingzhu/admin/), [`SecurityManager.checkWrite(java.lang.String)`](http://www.cnblogs.com/songxingzhu/admin/)

RandomAccessFile

public **RandomAccessFile**([File](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类") file,
                        [String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") mode)
                 throws [FileNotFoundException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 [`File`](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类") 参数指定。将创建一个新的 [`FileDescriptor`](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")对象来表示此文件的连接。 

mode 参数指定用以打开文件的访问模式。允许的值及其含意为:

含意
"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
"rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。

"rws""rwd" 模式的工作方式极其类似
FileChannel 类的 force(boolean) 方法,分别传递
truefalse参数,除非它们始终应用于每个 I/O
操作,并因此通常更为高效。如果该文件位于本地存储设备上,那么当返回此类的一个方法的调用时,可以保证由该调用对此文件所做的所有更改均被写入该设备。这对确保在系统崩溃时不会丢失重要信息特别有用。如果该文件不在本地设备上,则无法提供这样的保证。

"rwd" 模式可用于减少执行的 I/O 操作数量。使用 "rwd" 仅要求更新要写入存储的文件的内容;使用 "rws"
要求更新要写入的文件内容及其元数据,这通常要求至少一个以上的低级别 I/O 操作。

如果存在安全管理器,则使用 file 参数的路径名作为其参数调用它的 checkRead
方法,以查看是否允许对该文件进行读取访问。如果该模式允许写入,那么还使用该路径参数调用该安全管理器的 checkWrite
方法,以查看是否允许对该文件进行写入访问。

参数:

`file` \- 该文件对象
`mode` \- 访问模式,如[上](http://www.cnblogs.com/songxingzhu/admin/)所述

抛出:

`[IllegalArgumentException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果此模式参数与 `"r"`、`"rw"`、`"rws"` 或 `"rwd"` 的其中一个不相等
`[FileNotFoundException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果该模式为 `"r"`,但给定的文件对象不表示一个现有的常规文件,或者该模式以 `"rw"` 开头,但给定的文件对象不表示一个现有的可写常规文件,而且无法创建具有该名称的新常规文件,或者在打开或创建该文件时发生一些其他错误
`[SecurityException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果存在安全管理器,并且其 `checkRead` 方法拒绝对该文件的读取访问,或者该模式为 "rw",并且该安全管理器的 `checkWrite` 方法拒绝对该文件的写入访问

另请参见:

[`SecurityManager.checkRead(java.lang.String)`](http://www.cnblogs.com/songxingzhu/admin/), [`SecurityManager.checkWrite(java.lang.String)`](http://www.cnblogs.com/songxingzhu/admin/), [`FileChannel.force(boolean)`](http://www.cnblogs.com/songxingzhu/admin/)

方法详细信息

getFD

public final [FileDescriptor](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类") **getFD**()
                           throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

返回与此流关联的不透明文件描述符对象。 

返回:

 与此流关联的不透明文件描述符对象。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

另请参见:

[`FileDescriptor`](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

getChannel

public final [FileChannel](http://www.cnblogs.com/songxingzhu/admin/ "java.nio.channels 中的类") **getChannel**()

返回与此文件关联的唯一 [`FileChannel`](http://www.cnblogs.com/songxingzhu/admin/ "java.nio.channels 中的类")对象。 

返回通道的 java.nio.channels.FileChannel#position()position`` 将始终等于
getFilePointer
方法返回的此对象的文件指针偏移量。显式或者通过读取或写入字节来更改此对象的文件指针偏移量将更改通道的位置,反之亦然。通过此对象更改此文件的长度将更改通过文件通道看到的长度,反之亦然。

返回:

 与此文件关联的文件通道

从以下版本开始:

 1.4

read

public int **read**()
         throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件中读取一个数据字节。以整数形式返回此字节,范围在 0 到 255 (`0x00-0x0ff`)。如果尚无输入可用,将阻塞此方法。 

尽管 RandomAccessFile 不是 InputStream 的子类,但此方法的行为与 InputStream
InputStream.read() 方法完全一样。

返回:

 下一个数据字节,如果已到达文件的末尾,则返回 `-1`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。如果已到达文件的末尾,则不抛出此异常。

read

public int **read**(byte[] b,
                int off,
                int len)
         throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

将最多 `len`个数据字节从此文件读入 byte 数组。在至少一个输入字节可用前,此方法一直阻塞。 

尽管 RandomAccessFile 不是 InputStream 的子类,但此方法的行为与 InputStream
InputStream.read(byte[], int, int) 方法完全一样。

参数:

`b` \- 读入数据的缓冲区。
`off` \- 写入数据的数组 `b` 中的初始偏移量。
`len` \- 读取的最多字节数。

返回:

 读入缓冲区的总字节数,如果由于已到达文件的末尾而不再有数据,则返回 `-1`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果由于文件结束之外的某种原因不能读取第一个字节,或者随机访问文件已关闭,或者发生其他 I/O 错误。
`[NullPointerException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果 `b` 为 `null`。
`[IndexOutOfBoundsException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果 `off`为负,`len` 为负,或者 `len` 大于 `b.length - off`

read

public int **read**(byte[] b)
         throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

将最多 `b.length`个数据字节从此文件读入 byte 数组。在至少一个输入字节可用前,此方法一直阻塞。 

尽管 RandomAccessFile 不是 InputStream 的子类,但此方法的行为与 InputStream
InputStream.read(byte[])
方法完全一样。

参数:

`b` \- 将数据读入的缓冲区。

返回:

 读入缓冲区的总字节数,如果由于已到达此文件的末尾而不再有数据,则返回 `-1`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果由于文件结束之外的某种原因不能读取第一个字节,或者随机访问文件已关闭,或者发生其他 I/O 错误。
`[NullPointerException](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类")` \- 如果 `b` 为 `null`。

readFully

public final void **readFully**(byte[] b)
                     throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

将 `b.length`个字节从此文件读入 byte 数组,并从当前文件指针开始。在读取到请求数量的字节之前,此方法将从该文件重复读取。在读取了请求数量的字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readFully](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`b` \- 将数据读入的缓冲区。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取所有字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readFully

public final void **readFully**(byte[] b,
                            int off,
                            int len)
                     throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

将正好 `len`个字节从此文件读入 byte 数组,并从当前文件指针开始。在读取到请求数量的字节之前,此方法将从该文件重复读取。在读取了请求数量的字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readFully](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`b` \- 读入数据的缓冲区。
`off` \- 数据的初始偏移量。
`len` \- 要读取的字节数。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取所有字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

skipBytes

public int **skipBytes**(int n)
              throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

尝试跳过输入的 `n`个字节以丢弃跳过的字节。 

此方法可能跳过一些较少数量的字节(可能包括零)。这可能由任意数量的条件引起;在跳过 n 个字节之前已到达文件的末尾只是其中的一种可能。此方法从不抛出
EOFException。返回跳过的实际字节数。如果 n 为负数,则不跳过任何字节。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[skipBytes](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`n` \- 要跳过的字节数。

返回:

 跳过的实际字节数。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

write

public void **write**(int b)
           throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

向此文件写入指定的字节。从当前文件指针开始写入。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[write](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`b` \- 要写入的 `byte`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

write

public void **write**(byte[] b)
           throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

将 `b.length`个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[write](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`b` \- 数据。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

write

public void **write**(byte[] b,
                  int off,
                  int len)
           throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

将 `len` 个字节从指定 byte 数组写入到此文件,并从偏移量 `off`处开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[write](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`b` \- 数据。
`off` \- 数据的初始偏移量。
`len` \- 要写入的字节数。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

getFilePointer

public long **getFilePointer**()
                    throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

返回此文件中的当前偏移量。 

返回:

 到此文件开头的偏移量(以字节为单位),在该位置发生下一个读取或写入操作。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

seek

public void **seek**(long pos)
          throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。 

参数:

`pos` \- 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果 `pos` 小于 `0` 或者发生 I/O 错误。

length

public long **length**()
            throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

返回此文件的长度。 

返回:

 按字节测量的此文件的长度。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

setLength

public void **setLength**(long newLength)
               throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

设置此文件的长度。 

如果 length 方法返回的文件的现有长度大于 newLength 参数,则该文件将被截短。在此情况下,如果 getFilePointer
方法返回的文件偏移量大于 newLength,那么在返回此方法后,该偏移量将等于 newLength

如果 length 方法返回的文件的现有长度小于 newLength 参数,则该文件将被扩展。在此情况下,未定义文件扩展部分的内容。

参数:

`newLength` \- 文件的所需长度

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误

从以下版本开始:

 1.2

close

public void **close**()
           throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

关闭此随机访问文件流并释放与该流关联的所有系统资源。关闭的随机访问文件不能执行输入或输出操作,而且不能重新打开。 

如果此文件具有一个关联的通道,那么该通道也会被关闭。

指定者:

 接口 `[Closeable](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[close](http://www.cnblogs.com/songxingzhu/admin/)`

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readBoolean

public final boolean **readBoolean**()
                          throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个 `boolean`。此方法从该文件的当前文件指针开始读取单个字节。值 `0` 表示 `false`。其他任何值表示 `true`。在读取了该字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readBoolean](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 读取的 `boolean` 值。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readByte

public final byte **readByte**()
                    throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个有符号的八位值。此方法从该文件的当前文件指针开始读取一个字节。如果读取的字节为 `b`,其中 `0 <= b <= 255`,则结果将是: 
(byte)(b)

在读取了该字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readByte](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 以有符号的八位 `byte` 形式返回此文件的下一个字节。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readUnsignedByte

public final int **readUnsignedByte**()
                           throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个无符号的八位数。此方法从此文件的当前文件指针开始读取一个字节,并返回该字节。 

在读取了该字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readUnsignedByte](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下一个字节,解释为一个无符号的八位数。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readShort

public final short **readShort**()
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个有符号的 16 位数。此方法从此文件的当前文件指针开始读取两个字节。如果按顺序读取的两个字节为 `b1` 和 `b2`,其中两个值都在 `0` 和 `255`之间(包含),则此结果等于: 
(short)((b1 << 8) | b2)

在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readShort](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下两个字节,解释为一个有符号的 16 位数。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取两个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readUnsignedShort

public final int **readUnsignedShort**()
                            throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个无符号的 16 位数。此方法从该文件的当前文件指针开始读取两个字节。如果按顺序读取的字节为 `b1` 和 `b2`,其中 `0 <= b1, b2 <= 255`,则结果将等于: 
(b1 << 8) | b2

在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readUnsignedShort](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下两个字节,解释为一个无符号的 16 位整数。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取两个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readChar

public final char **readChar**()
                    throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个字符。此方法从该文件的当前文件指针开始读取两个字节。如果按顺序读取的字节为 `b1` 和 `b2`,其中 `0 <= b1, b2 <= 255`,则结果将等于: 
(char)((b1 << 8) | b2)

在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readChar](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下两个字节,解释为 `char`。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取两个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readInt

public final int **readInt**()
                  throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个有符号的 32 位整数。此方法从该文件的当前文件指针开始读取 4 个字节。如果按顺序读取的字节为 `b1`、`b2`、`b3` 和 `b4`,其中 `0 <= b1, b2, b3, b4 <= 255`,则结果将等于: 
(b1 << 24) | (b2 << 16) + (b3 << 8) + b4

在读取了这四个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readInt](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下四个字节,解释为一个 `int`。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取四个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readLong

public final long **readLong**()
                    throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个有符号的 64 位整数。此方法从该文件的当前文件指针开始读取八个字节。如果按顺序读取的字节为 `b1`、`b2`、`b3`、`b4`、`b5`、`b6`、`b7` 和 `b8`,其中: 
0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,

则结果将等于:

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

在读取了这八个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readLong](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下八个字节,解释为一个 `long`。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取八个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readFloat

public final float **readFloat**()
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个 `float`。此方法从当前文件指针开始读取一个 `int` 值,类似于使用 `readInt` 方法,然后使用 `Float` 类中的 `intBitsToFloat` 方法将该 `int` 转换为一个 `float`。 

在读取了这四个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readFloat](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下四个字节,解释为一个 `float`。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取四个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

另请参见:

[`readInt()`](http://www.cnblogs.com/songxingzhu/admin/), [`Float.intBitsToFloat(int)`](http://www.cnblogs.com/songxingzhu/admin/)

readDouble

public final double **readDouble**()
                        throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个 `double`。此方法从当前文件指针开始读取一个 `long` 值,类似于使用 `readLong` 方法,然后使用 `Double` 类中的 `longBitsToDouble` 方法将该 `long` 转换为一个 `double`。 

在读取了这八个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readDouble](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件的下八个字节,解释为一个 `double`。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取八个字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

另请参见:

[`readLong()`](http://www.cnblogs.com/songxingzhu/admin/), [`Double.longBitsToDouble(long)`](http://www.cnblogs.com/songxingzhu/admin/)

readLine

public final [String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") **readLine**()
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取文本的下一行。此方法可以从该文件的当前文件指针处成功地读取字节,直到到达行结束符或文件的末尾。每个字节都转换为一个字符,方法是采用该字符的低八位字节值,并将该字符的高八位设置为零。因此,此方法不支持完整的 Unicode 字符集。 

文本行由回车符 ('\r') 和一个换行符 ('\n')
结束,回车符后面紧跟一个换行符,或者是文件的末尾。不使用行结束符,并且在返回的字符串中不包括结束符。

在读取了一个换行符、读取了一个回车符和它后面的字节(查看是否为一个新行),到达文件的末尾或者抛出异常之前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readLine](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 此文件文本的下一行,如果连一个字节也没有读取就已到达文件的末尾,则返回 null。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

readUTF

public final [String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") **readUTF**()
                     throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

从此文件读取一个字符串。该字符串已使用 [UTF-8 修改版](http://www.cnblogs.com/songxingzhu/admin/)格式进行编码。 

从当前文件指针开始读取前两个字节,类似于使用
readUnsignedShort。此值给出已编码字符串中随后的字节数,而不是结果字符串的长度。随后的字节然后解释为 UTF-8
修改版格式的字节编码字符,并转换为字符。

在读取了所有字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。

指定者:

 接口 `[DataInput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[readUTF](http://www.cnblogs.com/songxingzhu/admin/)`

返回:

 一个 Unicode 字符串。

抛出:

`[EOFException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果在读取所有字节之前此文件已到达末尾。
`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。
`[UTFDataFormatException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果这些字节不表示 Unicode 字符串的有效 UTF-8 修改版编码。

另请参见:

[`readUnsignedShort()`](http://www.cnblogs.com/songxingzhu/admin/)

writeBoolean

public final void **writeBoolean**(boolean v)
                        throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按单字节值将 `boolean` 写入该文件。值 `true` 写出为值 `(byte)1`;值 `false` 写出为值 `(byte)0`。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeBoolean](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `boolean` 值。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeByte

public final void **writeByte**(int v)
                     throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按单字节值将 `byte`写入该文件。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeByte](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `byte` 值。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeShort

public final void **writeShort**(int v)
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按两个字节将 `short`写入该文件,先写高字节。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeShort](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `short`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeChar

public final void **writeChar**(int v)
                     throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按双字节值将 `char`写入该文件,先写高字节。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeChar](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `char` 值。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeInt

public final void **writeInt**(int v)
                    throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按四个字节将 `int`写入该文件,先写高字节。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeInt](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `int`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeLong

public final void **writeLong**(long v)
                     throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按八个字节将 `long`写入该文件,先写高字节。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeLong](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `long`。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeFloat

public final void **writeFloat**(float v)
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

使用 `Float` 类中的 `floatToIntBits` 方法将浮点参数转换为一个 `int`,然后按四字节数量将该 `int`值写入该文件,先写高字节。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeFloat](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `float` 值。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

另请参见:

[`Float.floatToIntBits(float)`](http://www.cnblogs.com/songxingzhu/admin/)

writeDouble

public final void **writeDouble**(double v)
                       throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

使用 `Double` 类中的 `doubleToLongBits` 方法将双精度参数转换为一个 `long`,然后按八字节数量将该 `long`值写入该文件,先定高字节。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeDouble](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`v` \- 要写入的 `double` 值。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

另请参见:

[`Double.doubleToLongBits(double)`](http://www.cnblogs.com/songxingzhu/admin/)

writeBytes

public final void **writeBytes**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") s)
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按字节序列将该字符串写入该文件。该字符串中的每个字符均按顺序写出,并丢弃其高八位。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeBytes](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`s` \- 要写入的字节的字符串。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

writeChars

public final void **writeChars**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") s)
                      throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

按字符序列将一个字符串写入该文件。每个字符均写入数据输出流,类似于使用 `writeChar`方法。写入从文件指针的当前位置开始。 

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeChars](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`s` \- 要写入的 `boolean` 值。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

另请参见:

[`writeChar(int)`](http://www.cnblogs.com/songxingzhu/admin/)

writeUTF

public final void **writeUTF**([String](http://www.cnblogs.com/songxingzhu/admin/ "java.lang 中的类") str)
                    throws [IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")

使用 [modified UTF-8](http://www.cnblogs.com/songxingzhu/admin/)编码以与机器无关的方式将一个字符串写入该文件。 

首先,把两个字节从文件的当前文件指针写入到此文件,类似于使用 writeShort
方法并给定要跟随的字节数。此值是实际写出的字节数,而不是该字符串的长度。在该长度之后,按顺序输出该字符串的每个字符,并对每个字符使用 UTF-8
修改版编码。

指定者:

 接口 `[DataOutput](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的接口")` 中的 `[writeUTF](http://www.cnblogs.com/songxingzhu/admin/)`

参数:

`str` \- 要写入的字符串。

抛出:

`[IOException](http://www.cnblogs.com/songxingzhu/admin/ "java.io 中的类")` \- 如果发生 I/O 错误。

JAVA中RandomAccessFile类的用法
https://www.dearcloud.cn/2012/09/16/20200310-cnblogs-old-posts/20120916-JAVA中RandomAccessFile类的用法/
作者
宋兴柱
发布于
2012年9月16日
许可协议