Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RandomAccessFile 使用 #13

Open
DraperHXY opened this issue Jan 17, 2019 · 0 comments
Open

RandomAccessFile 使用 #13

DraperHXY opened this issue Jan 17, 2019 · 0 comments
Assignees

Comments

@DraperHXY
Copy link
Owner

DraperHXY commented Jan 17, 2019

有些文章对此的翻译是随机访问文件,但对于其理解颇为费解,Random 在英文中的翻译有 任意的意思,所以翻译成任意访问文件

任意访问文件存在的意义

  • 是 Java I/O 体系中最丰富的文件内容访问类,提供了众多方法来访问文件内容
  • 可以自由分文文件的任意位置,所以访问文件的部分内容,RandomAccessFile 可以作为一种很好的选择
  • 可以用来访问保存数据记录的文件,文件的记录大小不必相同,但是其大小和位置必须是可知的

使用

RandomAccessFile raf = new RandomAccessFile(new File("a.txt"),"rw");

RandomAccessFile 的构造函数中有一个 String 类型的 mode 参数
用来指定打开文件的访问模式

  • r 以只读方式打开。调用结果对象的任何 write 方法都会抛出 IOException
  • rw 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
  • rws 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新偶读同步写入到底层的存储设备。
  • rwd 打开以便读取和写入,对于 "rw",还要求对文件的内容的每个更新都同步写入到底层存储设备中

seek()

seek 用来移动访问文件的指针,其参数为 long 类型,表示指针的下标
有了这个操作,对于文件的操作就很灵活
比如说在文件后追加内容

raf.seek(raf.length());
raf.write(".......".getBytes());

但是要注意对于文件的操作只能追加,不能在中间插入,否则就会将原有的文件覆盖

代码实战

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant