随机读写流

167 阅读2分钟

「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

前面学习的文件输入流和文件输出流都是单向的,流中的数据必须按顺序进行读写

在某些情况下,程序需要不按照顺序随机地访问磁盘文件中的内容

Java提供了专门用来处理文件随机存取的类RandomAccessFile

一.简述

1、是JAVA I/O流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容。

2、由于可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,RandomAccessFile将是更好的选择。

3、可以用来访问保存数据记录的文件,文件的记录的大小不必相同,但是其大小和位置必须是可知的。

二.使用方法

(1)java文件模型 在硬盘上的文件是byte byte存储的是数据的集合

(2)打开文件 两种模式 “rw”(读写) “r“(只读) RandomAccessFile raf = new RandomAccessFile(file,"rw") 文件指针,打开文件时指针在开头pointer = 0

(3)写方法 raf.write(int) ---> 只写一个字节(后八位),同时指针指向下一个位置,准备再次写入

(4)读方法 int b = raf.read() ---->读一个字节

(5)关闭 文件读写完成以后一定要关闭(Oracle 官方说明)

RadomAccessFile类

RandomAccessFile
----用来随机读取文件,其功能更完善
----类直接隶属于Object类
----类创建的流的指向既可以作为源,
也可以作为目的地

RandomAccessFile类的构造方法

public RandomAccessFile(String name, String mode)
throws FileNotFoundException
 public RandomAccessFile(File file, String mode)
throws FileNotFoundException
第二个参数mode取值:
        “r”— 以只读方式打开文件
        “rw” —以读写方式打开文件

RandomAccessFile类的成员方法

public long getFilePointer() throws IOException
返回当前文件指针
• public void seek(long pos) throws IOException
把文件指针置于给出的位置pos
• public long length() throws IOException
返回文件长度
• public int skipBytes(int n) throws IOException
从当前位置开始跳过n个字节

在这里插入图片描述 在这里插入图片描述