Java基础(二十八)Java IO(5)RandomAccessFile类与过滤器流(Filter Stream)

  一、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"));

 

posted @ 2018-08-03 11:06  BigJunOba  阅读(283)  评论(0编辑  收藏  举报