「这是我参与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个字节