RandomAccessFile

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。
RandomAccessFile不是IO流中的子类,但是支持对文件进行读取写入操作

特点总结:
1、 该对象可以读也可以写。
2、 该对象中的定义了一个大型的 byte 数组,通过定义指针来操作这个数组。
3、 该对象可以通过 getFilePointer() 获取指针的位置,通过 seek() 方法设置指针的位置。
4、 该对象操作的源和目的必须是文件。
5、 该对象内部封装了字节读取流和字节写入流。

RandomAccessFile的构造方法有两种:
1、 RandomAccessFile(File file, String mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。
2、 RandomAccessFile(String name, String mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。
此处的mode是一种指定用以打开文件的访问模式。有一下四种模式:
“r” : 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException。
“rw” : 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
“rws”: 打开以便读取和写入,对于 “rw”,还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
“rwd”: 打开以便读取和写入,对于 “rw”,还要求对文件内容的每个更新都同步写入到底层存储设备。

RandomAccessFile读取文件(只读模式),如下图代码所示。
该读取方法跟传统的流读取文件类似,它的特殊之处就是该类可以添加指针来指定开始读取的位置。如下图的Rf.seek(29),指针在29开始,前面部分则不读出来。
在这里插入图片描述
RandomAccessFile在文件末尾写入内容。
在这里插入图片描述
下图绿色框的内容是如上代码操作在文件内容末尾处添加的内容。
在这里插入图片描述
RandomAccessFile不能向文件的指定位置插入内容,如果要在指定的地方插入内容则不可以直接用指定的指针来指定位置插入,这样子不是插入内容,而是把指定位置处的内容给覆盖掉了。
插入内容的思路:
1、 程序需要先把插入点后面的内容读入缓冲区,
2、 把需要插入的数据写入文件后
3、 将缓冲区的内容追加到文件后面
在这里插入图片描述
下图绿色框是指针在103处插入的内容
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值