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
java.io.RandomAccessFile
- 所有已实现的接口:
- Closeable, DataInput, DataOutput
public class RandomAccessFileextends Objectimplements DataOutput, DataInput, Closeable
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。
通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。
- 从以下版本开始:
- JDK1.0
| 构造方法摘要 | |
|---|---|
RandomAccessFile(File file, String mode) 创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。 |
|
RandomAccessFile(String name, String mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。 |
|
| 方法摘要 | |
|---|---|
void |
close()
关闭此随机访问文件流并释放与该流关联的所有系统资源。 |
FileChannel |
getChannel()
返回与此文件关联的唯一 FileChannel
对象。 |
FileDescriptor |
getFD()
返回与此流关联的不透明文件描述符对象。 |
long |
getFilePointer()
返回此文件中的当前偏移量。 |
long |
length()
返回此文件的长度。 |
int |
read()
从此文件中读取一个数据字节。 |
int |
read(byte[] b)
将最多 b.length 个数据字节从此文件读入 byte 数组。 |
int |
read(byte[] b,
int off, int len) 将最多 len 个数据字节从此文件读入 byte
数组。 |
boolean |
readBoolean()
从此文件读取一个 boolean。 |
byte |
readByte()
从此文件读取一个有符号的八位值。 |
char |
readChar()
从此文件读取一个字符。 |
double |
readDouble()
从此文件读取一个 double。 |
float |
readFloat()
从此文件读取一个 float。 |
void |
readFully(byte[] b)
将 b.length 个字节从此文件读入 byte 数组,并从当前文件指针开始。 |
void |
readFully(byte[] b,
int off, int len) 将正好 len 个字节从此文件读入 byte
数组,并从当前文件指针开始。 |
int |
readInt()
从此文件读取一个有符号的 32 位整数。 |
String |
readLine()
从此文件读取文本的下一行。 |
long |
readLong()
从此文件读取一个有符号的 64 位整数。 |
short |
readShort()
从此文件读取一个有符号的 16 位数。 |
int |
readUnsignedByte()
从此文件读取一个无符号的八位数。 |
int |
readUnsignedShort()
从此文件读取一个无符号的 16 位数。 |
String |
readUTF()
从此文件读取一个字符串。 |
void |
seek(long pos)
设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。 |
void |
setLength(long newLength)
设置此文件的长度。 |
int |
skipBytes(int n)
尝试跳过输入的 n 个字节以丢弃跳过的字节。 |
void |
write(byte[] b)
将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 |
void |
write(byte[] b,
int off, int len) 将 len 个字节从指定 byte
数组写入到此文件,并从偏移量 off 处开始。 |
void |
write(int b)
向此文件写入指定的字节。 |
void |
writeBoolean(boolean v)
按单字节值将 boolean 写入该文件。 |
void |
writeByte(int v)
按单字节值将 byte 写入该文件。 |
void |
writeBytes(String s)
按字节序列将该字符串写入该文件。 |
void |
writeChar(int v)
按双字节值将 char 写入该文件,先写高字节。 |
void |
writeChars(String s)
按字符序列将一个字符串写入该文件。 |
void |
writeDouble(double v)
使用 Double 类中的 doubleToLongBits
方法将双精度参数转换为一个 long,然后按八字节数量将该 long
值写入该文件,先定高字节。 |
void |
writeFloat(float v)
使用 Float 类中的 floatToIntBits 方法将浮点参数转换为一个
int,然后按四字节数量将该 int 值写入该文件,先写高字节。 |
void |
writeInt(int v)
按四个字节将 int 写入该文件,先写高字节。 |
void |
writeLong(long v)
按八个字节将 long 写入该文件,先写高字节。 |
void |
writeShort(int v)
按两个字节将 short 写入该文件,先写高字节。 |
void |
writeUTF(String str)
使用 modified UTF-8 编码以与机器无关的方式将一个字符串写入该文件。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| 构造方法详细信息 |
|---|
RandomAccessFile
public RandomAccessFile(String name, String mode) throws FileNotFoundException
- 创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。将创建一个新的
FileDescriptor对象来表示到文件的连接。mode 参数指定用以打开文件的访问模式。允许的值及其含意如 RandomAccessFile(File,String) 构造方法所指定的那样。
如果存在安全管理器,则使用
name作为其参数调用其checkRead方法,以查看是否允许对该文件进行读取访问。如果该模式允许写入,那么还使用name作为安全管理器的参数来调用其checkWrite方法,以查看是否允许对该文件进行写入访问。- 参数:
name- 取决于系统的文件名mode- 此访问 mode- 抛出:
IllegalArgumentException- 如果此模式参数与 "r"、"rw"、"rws" 或 "rwd" 的其中一个不相等FileNotFoundException- 如果该模式为 "r",但给定的字符串表示一个现有的常规文件,或者该模式以 "rw" 开头,但给定的字符串不表示一个现有的可写常规文件,而且无法创建具有该名称的新常规文件,或者在打开或创建该文件时发生一些其他错误SecurityException- 如果存在安全管理器,并且其checkRead方法拒绝对该文件的读取访问,或者该模式为 "rw",并且该安全管理器的checkWrite方法拒绝对该文件的写入访问- 另请参见:
SecurityException,SecurityManager.checkRead(java.lang.String),SecurityManager.checkWrite(java.lang.String)
RandomAccessFile
public RandomAccessFile(File file, String mode) throws FileNotFoundException
- 创建从中读取和向其中写入(可选)的随机访问文件流,该文件由
File参数指定。将创建一个新的FileDescriptor对象来表示此文件的连接。mode 参数指定用以打开文件的访问模式。允许的值及其含意为:
"rws" 和 "rwd" 模式的工作方式极其类似值
含意
"r" 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。 "rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。 "rwd" 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。 FileChannel类的force(boolean)方法,分别传递 true 和 false参数,除非它们始终应用于每个 I/O 操作,并因此通常更为高效。如果该文件位于本地存储设备上,那么当返回此类的一个方法的调用时,可以保证由该调用对此文件所做的所有更改均被写入该设备。这对确保在系统崩溃时不会丢失重要信息特别有用。如果该文件不在本地设备上,则无法提供这样的保证。"rwd" 模式可用于减少执行的 I/O 操作数量。使用 "rwd" 仅要求更新要写入存储的文件的内容;使用 "rws" 要求更新要写入的文件内容及其元数据,这通常要求至少一个以上的低级别 I/O 操作。
如果存在安全管理器,则使用
file参数的路径名作为其参数调用它的checkRead方法,以查看是否允许对该文件进行读取访问。如果该模式允许写入,那么还使用该路径参数调用该安全管理器的checkWrite方法,以查看是否允许对该文件进行写入访问。- 参数:
file- 该文件对象mode- 访问模式,如上所述- 抛出:
IllegalArgumentException- 如果此模式参数与 "r"、"rw"、"rws" 或 "rwd" 的其中一个不相等FileNotFoundException- 如果该模式为 "r",但给定的文件对象不表示一个现有的常规文件,或者该模式以 "rw" 开头,但给定的文件对象不表示一个现有的可写常规文件,而且无法创建具有该名称的新常规文件,或者在打开或创建该文件时发生一些其他错误SecurityException- 如果存在安全管理器,并且其checkRead方法拒绝对该文件的读取访问,或者该模式为 "rw",并且该安全管理器的checkWrite方法拒绝对该文件的写入访问- 另请参见:
SecurityManager.checkRead(java.lang.String),SecurityManager.checkWrite(java.lang.String),FileChannel.force(boolean)
| 方法详细信息 |
|---|
getFD
public final FileDescriptor getFD() throws IOException
- 返回与此流关联的不透明文件描述符对象。
- 返回:
- 与此流关联的不透明文件描述符对象。
- 抛出:
IOException- 如果发生 I/O 错误。- 另请参见:
FileDescriptor
getChannel
public final FileChannel getChannel()
- 返回与此文件关联的唯一
FileChannel对象。返回通道的
java.nio.channels.FileChannel#position()position将始终等于getFilePointer方法返回的此对象的文件指针偏移量。显式或者通过读取或写入字节来更改此对象的文件指针偏移量将更改通道的位置,反之亦然。通过此对象更改此文件的长度将更改通过文件通道看到的长度,反之亦然。 - 返回:
- 与此文件关联的文件通道
- 从以下版本开始:
- 1.4
read
public int read()
throws IOException
- 从此文件中读取一个数据字节。以整数形式返回此字节,范围在 0 到 255 (
0x00-0x0ff)。如果尚无输入可用,将阻塞此方法。尽管
RandomAccessFile不是InputStream的子类,但此方法的行为与InputStream的InputStream.read()方法完全一样。 - 返回:
- 下一个数据字节,如果已到达文件的末尾,则返回
-1。 - 抛出:
IOException- 如果发生 I/O 错误。如果已到达文件的末尾,则不抛出此异常。
read
public int read(byte[] b,
int off,
int len)
throws IOException
- 将最多
len个数据字节从此文件读入 byte 数组。在至少一个输入字节可用前,此方法一直阻塞。尽管
RandomAccessFile不是InputStream的子类,但此方法的行为与InputStream的InputStream.read(byte[], int, int)方法完全一样。 - 参数:
b- 读入数据的缓冲区。off- 写入数据的数组b中的初始偏移量。len- 读取的最多字节数。- 返回:
- 读入缓冲区的总字节数,如果由于已到达文件的末尾而不再有数据,则返回
-1。 - 抛出:
IOException- 如果由于文件结束之外的某种原因不能读取第一个字节,或者随机访问文件已关闭,或者发生其他 I/O 错误。NullPointerException- 如果b为null。IndexOutOfBoundsException- 如果off为负,len为负,或者len大于b.length - off
read
public int read(byte[] b)
throws IOException
- 将最多
b.length个数据字节从此文件读入 byte 数组。在至少一个输入字节可用前,此方法一直阻塞。尽管
RandomAccessFile不是InputStream的子类,但此方法的行为与InputStream的InputStream.read(byte[])方法完全一样。 - 参数:
b- 将数据读入的缓冲区。- 返回:
- 读入缓冲区的总字节数,如果由于已到达此文件的末尾而不再有数据,则返回
-1。 - 抛出:
IOException- 如果由于文件结束之外的某种原因不能读取第一个字节,或者随机访问文件已关闭,或者发生其他 I/O 错误。NullPointerException- 如果b为null。
readFully
public final void readFully(byte[] b)
throws IOException
- 将
b.length个字节从此文件读入 byte 数组,并从当前文件指针开始。在读取到请求数量的字节之前,此方法将从该文件重复读取。在读取了请求数量的字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 - 参数:
b- 将数据读入的缓冲区。- 抛出:
EOFException- 如果在读取所有字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
readFully
public final void readFully(byte[] b,
int off,
int len)
throws IOException
- 将正好
len个字节从此文件读入 byte 数组,并从当前文件指针开始。在读取到请求数量的字节之前,此方法将从该文件重复读取。在读取了请求数量的字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 - 参数:
b- 读入数据的缓冲区。off- 数据的初始偏移量。len- 要读取的字节数。- 抛出:
EOFException- 如果在读取所有字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
skipBytes
public int skipBytes(int n)
throws IOException
- 尝试跳过输入的
n个字节以丢弃跳过的字节。此方法可能跳过一些较少数量的字节(可能包括零)。这可能由任意数量的条件引起;在跳过
n个字节之前已到达文件的末尾只是其中的一种可能。此方法从不抛出EOFException。返回跳过的实际字节数。如果n为负数,则不跳过任何字节。 - 参数:
n- 要跳过的字节数。- 返回:
- 跳过的实际字节数。
- 抛出:
IOException- 如果发生 I/O 错误。
write
public void write(int b)
throws IOException
- 向此文件写入指定的字节。从当前文件指针开始写入。
- 指定者:
- 接口
DataOutput中的write
- 参数:
b- 要写入的byte。- 抛出:
IOException- 如果发生 I/O 错误。
write
public void write(byte[] b)
throws IOException
- 将
b.length个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 - 指定者:
- 接口
DataOutput中的write
- 参数:
b- 数据。- 抛出:
IOException- 如果发生 I/O 错误。
write
public void write(byte[] b,
int off,
int len)
throws IOException
- 将
len个字节从指定 byte 数组写入到此文件,并从偏移量off处开始。 - 指定者:
- 接口
DataOutput中的write
- 参数:
b- 数据。off- 数据的初始偏移量。len- 要写入的字节数。- 抛出:
IOException- 如果发生 I/O 错误。
getFilePointer
public long getFilePointer()
throws IOException
- 返回此文件中的当前偏移量。
- 返回:
- 到此文件开头的偏移量(以字节为单位),在该位置发生下一个读取或写入操作。
- 抛出:
IOException- 如果发生 I/O 错误。
seek
public void seek(long pos)
throws IOException
- 设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。
- 参数:
pos- 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。- 抛出:
IOException- 如果pos小于0或者发生 I/O 错误。
length
public long length()
throws IOException
- 返回此文件的长度。
- 返回:
- 按字节测量的此文件的长度。
- 抛出:
IOException- 如果发生 I/O 错误。
setLength
public void setLength(long newLength)
throws IOException
- 设置此文件的长度。
如果
length方法返回的文件的现有长度大于newLength参数,则该文件将被截短。在此情况下,如果getFilePointer方法返回的文件偏移量大于newLength,那么在返回此方法后,该偏移量将等于newLength。如果
length方法返回的文件的现有长度小于newLength参数,则该文件将被扩展。在此情况下,未定义文件扩展部分的内容。 - 参数:
newLength- 文件的所需长度- 抛出:
IOException- 如果发生 I/O 错误- 从以下版本开始:
- 1.2
close
public void close()
throws IOException
- 关闭此随机访问文件流并释放与该流关联的所有系统资源。关闭的随机访问文件不能执行输入或输出操作,而且不能重新打开。
如果此文件具有一个关联的通道,那么该通道也会被关闭。
- 抛出:
IOException- 如果发生 I/O 错误。
readBoolean
public final boolean readBoolean()
throws IOException
- 从此文件读取一个
boolean。此方法从该文件的当前文件指针开始读取单个字节。值0表示false。其他任何值表示true。在读取了该字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。 - 指定者:
- 接口
DataInput中的readBoolean
- 返回:
- 读取的
boolean值。 - 抛出:
EOFException- 如果此文件已到达末尾。IOException- 如果发生 I/O 错误。
readByte
public final byte readByte()
throws IOException
- 从此文件读取一个有符号的八位值。此方法从该文件的当前文件指针开始读取一个字节。如果读取的字节为
b,其中0 <= b <= 255,则结果将是:(byte)(b)
在读取了该字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 返回:
- 以有符号的八位
byte形式返回此文件的下一个字节。 - 抛出:
EOFException- 如果此文件已到达末尾。IOException- 如果发生 I/O 错误。
readUnsignedByte
public final int readUnsignedByte()
throws IOException
- 从此文件读取一个无符号的八位数。此方法从此文件的当前文件指针开始读取一个字节,并返回该字节。
在读取了该字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 指定者:
- 接口
DataInput中的readUnsignedByte
- 返回:
- 此文件的下一个字节,解释为一个无符号的八位数。
- 抛出:
EOFException- 如果此文件已到达末尾。IOException- 如果发生 I/O 错误。
readShort
public final short readShort()
throws IOException
- 从此文件读取一个有符号的 16 位数。此方法从此文件的当前文件指针开始读取两个字节。如果按顺序读取的两个字节为
b1和b2,其中两个值都在0和255之间(包含),则此结果等于:(short)((b1 << 8) | b2)
在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 返回:
- 此文件的下两个字节,解释为一个有符号的 16 位数。
- 抛出:
EOFException- 如果在读取两个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
readUnsignedShort
public final int readUnsignedShort()
throws IOException
- 从此文件读取一个无符号的 16 位数。此方法从该文件的当前文件指针开始读取两个字节。如果按顺序读取的字节为
b1和b2,其中0 <= b1, b2 <= 255,则结果将等于:(b1 << 8) | b2
在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 指定者:
- 接口
DataInput中的readUnsignedShort
- 返回:
- 此文件的下两个字节,解释为一个无符号的 16 位整数。
- 抛出:
EOFException- 如果在读取两个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
readChar
public final char readChar()
throws IOException
- 从此文件读取一个字符。此方法从该文件的当前文件指针开始读取两个字节。如果按顺序读取的字节为
b1和b2,其中0 <= b1, b2 <= 255,则结果将等于:(char)((b1 << 8) | b2)
在读取了这两个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 返回:
- 此文件的下两个字节,解释为
char。 - 抛出:
EOFException- 如果在读取两个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
readInt
public final int readInt()
throws IOException
- 从此文件读取一个有符号的 32 位整数。此方法从该文件的当前文件指针开始读取 4 个字节。如果按顺序读取的字节为
b1、b2、b3和b4,其中0 <= b1, b2, b3, b4 <= 255,则结果将等于:(b1 << 24) | (b2 << 16) + (b3 << 8) + b4
在读取了这四个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 返回:
- 此文件的下四个字节,解释为一个
int。 - 抛出:
EOFException- 如果在读取四个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
readLong
public final long readLong()
throws IOException
- 从此文件读取一个有符号的 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在读取了这八个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 返回:
- 此文件的下八个字节,解释为一个
long。 - 抛出:
EOFException- 如果在读取八个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。
readFloat
public final float readFloat()
throws IOException
- 从此文件读取一个
float。此方法从当前文件指针开始读取一个int值,类似于使用readInt方法,然后使用Float类中的intBitsToFloat方法将该int转换为一个float。在读取了这四个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 返回:
- 此文件的下四个字节,解释为一个
float。 - 抛出:
EOFException- 如果在读取四个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。- 另请参见:
readInt(),Float.intBitsToFloat(int)
readDouble
public final double readDouble()
throws IOException
- 从此文件读取一个
double。此方法从当前文件指针开始读取一个long值,类似于使用readLong方法,然后使用Double类中的longBitsToDouble方法将该long转换为一个double。在读取了这八个字节、检测到流的末尾或者抛出异常前,此方法一直阻塞。
- 指定者:
- 接口
DataInput中的readDouble
- 返回:
- 此文件的下八个字节,解释为一个
double。 - 抛出:
EOFException- 如果在读取八个字节之前此文件已到达末尾。IOException- 如果发生 I/O 错误。- 另请参见:
readLong(),Double.longBitsToDouble(long)
readLine
public final String readLine() throws IOException
- 从此文件读取文本的下一行。此方法可以从该文件的当前文件指针处成功地读取字节,直到到达行结束符或文件的末尾。每个字节都转换为一个字符,方法是采用该字符的低八位字节值,并将该字符的高八位设置为零。因此,此方法不支持完整的 Unicode 字符集。
文本行由回车符 (
'\r') 和一个换行符 ('\n') 结束,回车符后面紧跟一个换行符,或者是文件的末尾。不使用行结束符,并且在返回的字符串中不包括结束符。在读取了一个换行符、读取了一个回车符和它后面的字节(查看是否为一个新行),到达文件的末尾或者抛出异常之前,此方法一直阻塞。
- 返回:
- 此文件文本的下一行,如果连一个字节也没有读取就已到达文件的末尾,则返回 null。
- 抛出:
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。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeBoolean
- 参数:
v- 要写入的boolean值。- 抛出:
IOException- 如果发生 I/O 错误。
writeByte
public final void writeByte(int v)
throws IOException
- 按单字节值将
byte写入该文件。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeByte
- 参数:
v- 要写入的byte值。- 抛出:
IOException- 如果发生 I/O 错误。
writeShort
public final void writeShort(int v)
throws IOException
- 按两个字节将
short写入该文件,先写高字节。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeShort
- 参数:
v- 要写入的short。- 抛出:
IOException- 如果发生 I/O 错误。
writeChar
public final void writeChar(int v)
throws IOException
- 按双字节值将
char写入该文件,先写高字节。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeChar
- 参数:
v- 要写入的char值。- 抛出:
IOException- 如果发生 I/O 错误。
writeInt
public final void writeInt(int v)
throws IOException
- 按四个字节将
int写入该文件,先写高字节。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeInt
- 参数:
v- 要写入的int。- 抛出:
IOException- 如果发生 I/O 错误。
writeLong
public final void writeLong(long v)
throws IOException
- 按八个字节将
long写入该文件,先写高字节。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeLong
- 参数:
v- 要写入的long。- 抛出:
IOException- 如果发生 I/O 错误。
writeFloat
public final void writeFloat(float v)
throws IOException
- 使用
Float类中的floatToIntBits方法将浮点参数转换为一个int,然后按四字节数量将该int值写入该文件,先写高字节。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeFloat
- 参数:
v- 要写入的float值。- 抛出:
IOException- 如果发生 I/O 错误。- 另请参见:
Float.floatToIntBits(float)
writeDouble
public final void writeDouble(double v)
throws IOException
- 使用
Double类中的doubleToLongBits方法将双精度参数转换为一个long,然后按八字节数量将该long值写入该文件,先定高字节。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeDouble
- 参数:
v- 要写入的double值。- 抛出:
IOException- 如果发生 I/O 错误。- 另请参见:
Double.doubleToLongBits(double)
writeBytes
public final void writeBytes(String s) throws IOException
- 按字节序列将该字符串写入该文件。该字符串中的每个字符均按顺序写出,并丢弃其高八位。写入从文件指针的当前位置开始。
- 指定者:
- 接口
DataOutput中的writeBytes
- 参数:
s- 要写入的字节的字符串。- 抛出:
IOException- 如果发生 I/O 错误。
writeChars
public final void writeChars(String s) throws IOException
- 按字符序列将一个字符串写入该文件。每个字符均写入数据输出流,类似于使用
writeChar方法。写入从文件指针的当前位置开始。 - 指定者:
- 接口
DataOutput中的writeChars
- 参数:
s- 要写入的boolean值。- 抛出:
IOException- 如果发生 I/O 错误。- 另请参见:
writeChar(int)
writeUTF
public final void writeUTF(String str) throws IOException
- 使用 modified UTF-8编码以与机器无关的方式将一个字符串写入该文件。
首先,把两个字节从文件的当前文件指针写入到此文件,类似于使用
writeShort方法并给定要跟随的字节数。此值是实际写出的字节数,而不是该字符串的长度。在该长度之后,按顺序输出该字符串的每个字符,并对每个字符使用 UTF-8 修改版编码。 - 指定者:
- 接口
DataOutput中的writeUTF
- 参数:
str- 要写入的字符串。- 抛出:
IOException- 如果发生 I/O 错误。

浙公网安备 33010602011771号