15.0、Java_IO流 - 随机访问流

15.0、Java_IO流 - 随机访问流

RandomAccessFile 可以实现两个作用:

1. 实现对一个文件做读和写的操作;

2. 可以访问文件的任意位置;不像其他流只能按照先后顺序读取;

        在开发某些 客户端 软件时,经常用到这个功能强大的可以任意操作文件内容得类;比如:软件的使用次数和使用日期,可以通过本类访问文件中保存的次数和日期的地方进行比对和修改;Java 很少开发客户端软件,所以在 Java 开发中这个类用的相对较少;

学习这个流我们需要掌握三个核心方法:

        1. RandomAccessFile ( String name,String mode ) name 用来确定文件;mode 取 r(读)或 rw (可读写),通过 mode 可以确定对文件的访问权限;

        2. seek(long a) 用来定位流对象读写文件的位置,a 确定读写位置距离文件开头的字节个数;

        3. getFilePointer() 获得流的当前读写位置;

示例代码,如下所示 ->

public class Demo9 {

    public static void main(String[] args) throws Exception {
        //这里第二个参数是 rw 表示赋予 raf 流对象读和写的权利
        RandomAccessFile raf = new RandomAccessFile("D/:text.txt","rw");
        int arr[] = {10,20,30,40,50,60,70,80,90,100};
        //将数据写入到 D:/text.txt 文件当中
        for(int i = 0;i < arr.length;i++) {
            raf.writeInt(arr[i]);
        }
        //设置 raf 流对象的指针位置,指针位置默认是 0,这里设置为 4 相当于是第 5 个字节的位置
        raf.seek(4);
        //因为我们写入的是 int 类型的数据,每个 int 类型的数据都占 4 个字节,所以如果我们从当前指针位置读起4字节那么结果应该是 20
        raf.readInt();//读取结果为 20
        //假设现在我们想要将 30 替换为 33,可以如下操作
        //因为 30 是从第 9 个字节开始的所以设置位置为 8(因为位置下标从 0 开始)
        raf.seek(8);
        //将 33 写入,写入之后自动覆盖掉原先的值
        raf.writeInt(33);
    }

}

上述代码主要完成了:

1. 随机流将数据写入文件中;

2. 设置随机流的指针位置;

3. 利用流对象从指针位置开始读取数据;

4. 从流对象指针位置开始处修改数据;

你可能感兴趣的:(Java_IO流学习总结,Java,Java随机流,JavaIO流,读取数据,设置指针位置)