一、RandomAccessFile类
使用RandomAccessFile类可以读取任意位置数据的文件。
1.构造方法
- RandomAccessFile(String name, String mode)
- RandomAccessFile(File file, String mode)
其中“mode”表示:r(只读)、rw(可读写)、rws(同步写入)、rwd(更新同步写入)
2.常用方法
3.示例代码
package jun.iplab.RandomAccessFile; import java.io.*; public class RandomAccessFileTest { public static void main(String[] args) {
int[] bytes = {1,2,3,4,5};
try {
RandomAccessFile raf = new RandomAccessFile("D:\\JavaIOTest\\RandomAccessFileTest.txt", "rw");
// 按照顺序将数据写入文件中
for (int i = 0; i < bytes.length; i++) {
raf.writeInt(bytes[i]);
}
// 按照倒序读出数据
for (int i = bytes.length - 1; i >= 0; i--) {
// 由于int型数据占4个字节,因此文件指针位置需要乘以4
raf.seek(i*4);
// 从文件中读出数据并输出到控制台
System.out.println(raf.readInt());
}
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} 输出:
5
4
3
2
1
二、读写二进制数据
过滤器流是为某种目的过滤字节或字符的数据流。
基本的输入流提供的读取方法,只能用来读取字节或字符。而过滤器流能够读取整数值、双精度值或字符串,但需要一个过滤器类来包装输入流。
DataInputStream和DataOutputStream类分别是FilterInputStream和FileOutputStream类的子类。它们分别实现了DataInput和DataOutput接口,该接口中定义了独立于具体机器的带有格式的读写操作,从而可以实现对Java中的不同基本类型的读写。
DataOutput接口定义了用于以二进制形式写数组、字符、Boolean值和字符串的各种方法。
DataInput接口定义了读取二进制形式数据的各种方法。
例如:
为了从文件中读入二进制数据,可以将DataInputStream与某个字节源相结合,例如FileInputStream:
DataInputStream dis = new DataInputStream(new FIleInputStream("employee.dat"));
与此类似,要想写出二进制数据,可以使用DataOutputStream类:
DataOutputStream dos = new DataOutputStream(new FIleOutputStream("employee.dat"));