原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分。FileInputStream和FileOutputStream没有这样的功能。

创建一个RandomAccessFile

在使用RandomAccessFile之前,必须初始化它。这是例子:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");

请注意构造函数的第二个参数:“rw”,表明你以读写方式打开文件。请查阅Java文档获知你需要以何种方式构造RandomAccessFile。

在RandomAccessFile中来回读写

在RandomAccessFile的某个位置读写之前,必须把文件指针指向该位置。通过seek()方法可以达到这一目标。可以通过调用getFilePointer()获得当前文件指针的位置。例子如下:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");
2  
3 file.seek(200);
4  
5 long pointer = file.getFilePointer();
6  
7 file.close();

读取RandomAccessFile

RandomAccessFile中的任何一个read()方法都可以读取RandomAccessFile的数据。例子如下:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");
2  
3 int aByte = file.read();
4  
5 file.close();

read()方法返回当前RandomAccessFile实例的文件指针指向的位置中包含的字节内容。Java文档中遗漏了一点:read()方法在读取完一个字节之后,会自动把指针移动到下一个可读字节。这意味着使用者在调用完read()方法之后不需要手动移动文件指针。

写入RandomAccessFile

RandomAccessFile中的任何一个write()方法都可以往RandomAccessFile中写入数据。例子如下:

1 RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt""rw");
2  
3 file.write("Hello World".getBytes());
4  
5 file.close();

与read()方法类似,write()方法在调用结束之后自动移动文件指针,所以你不需要频繁地把指针移动到下一个将要写入数据的位置。

RandomAccessFile异常处理

为了本篇内容清晰,暂时忽略RandomAccessFile异常处理的内容。RandomAccessFile与其他流一样,在使用完毕之后必须关闭。想要了解更多信息,请参考Java IO异常处理

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO: RandomAccessFile

最新文章

  1. ES6之let命令详解
  2. django+mysql学习笔记
  3. Linux服务器配置多台虚拟主机
  4. CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)
  5. Spring mvc框架 controller间跳转 ,重定向 ,传参
  6. Android带侧滑菜单和ToolBar的BaseActivity
  7. hdu 最大报销额
  8. 【转】基于RMAN实现坏块介质恢复(blockrecover)
  9. 中断服务程序(Interrupt Service Routines,ISR)注意事项
  10. php运用curl触发后台脚本不超时执行某项任务
  11. TRECT的使用
  12. 从零到实现Shiro中Authorization和Authentication的缓存
  13. JS常用方法总结
  14. kylin配置
  15. mysql练习----Self join
  16. robotframework测试用例加入注释
  17. Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds
  18. Astah 使用 流程图、类图、时序图
  19. npm 切换淘宝源
  20. 关于 TensorFlow

热门文章

  1. linux的vi编辑器中如何查找内容(关键字)
  2. Vue 源码学习(1)
  3. Java线程(一)——创建线程的两种方法
  4. MyBatis从入门到精通(第5章):5.4 Example 介绍
  5. VMware下的Ubuntu16设置连接主机网络,设置主机下可以通过xshell访问 VMware下的Ubuntu
  6. 面向对象 part6 继承
  7. python内置模块——time
  8. Python模块——json
  9. JetBrains Phpstorm 、 PyCharm 2019 最新破解码亲测可用
  10. 前端-HTLM