Java中的RandomAccessFile

RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,既可以写入,也可以输出。
与普通输入输出流不同的是,它支持“随机访问”模式,程序可以跳到文件的任意地方来读写数据。因此,如果只需要访问文件的部分内容,则它是一个更好的选择。

但提供便利的同时,RandomAccessFile也有一个最大的局限,就是只能读写文件,而不能读写其他IO节点。

RandomAccessFile允许自由定位文件记录指针,所谓的文件记录指针就是当前读写处位置的标识。当创建了一个RandomAccessFile对象之后,该对象的文件记录指针位于文件头,也就是0.当读写了N个字节之后,文件记录指针将会向后移动N个字节。除此之外,RandomAccessFile还允许自由移动该记录指针,既可以向前,也可以向后。

操作文件记录指针
  1. long getFilePointer() :返回文件指针的当前位置
  2. void seek(long pos) : 将文件记录指针定位到pos位置
2个构造器
RandomAccessFile类有两个构造器,这两个构造器基本相同,只是指定文件的形式不同:一个使用String参数来指定文件名。一个使用File参数来指定文件本身。
4种访问模式
  1. "r" : 以只读方式打开指定文件。如果试图执行写入方法,都将会抛出IOException错误。
  2. "rw" : 以读写方式打开指定文件。如果文件不存在,则会试图创建该文件。
  3. "rws" : 以读写方式打开指定文件。另外还要求如果对文件的内容或者元数据的每个更新都同步写入底层存储设备。
  4. "rwd" : 以读写方式打开指定文件。除此之外,还要求对文件内容的每个更新都同步写入底层存储设备。
不能在中间插入
虽然RandomAccessFile有这么多的便利,但是需要注意的是,它仍然不能向文件的指定位置插入内容,如果直接将文件记录指针移动到中间某位置后开始输出,则新输出的内容会覆盖文件中原有的内容。如果需要向指定位置插入内容,程序需要先把插入点后面的内容读入缓冲区,等把需要插入的数据写入文件后,再将缓冲区的内容追加到文件后面。

Sample

喜欢的话请扫码支持一下~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值