转载自   Java IO: RandomAccessFile

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

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

创建一个RandomAccessFile

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

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

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

在RandomAccessFile中来回读写

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

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");
file.seek(200);
long pointer = file.getFilePointer();
file.close();

读取RandomAccessFile

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

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");
int aByte = file.read();
file.close();

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

写入RandomAccessFile

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

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");
file.write("Hello World".getBytes());
file.close();

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

RandomAccessFile异常处理

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

Java IO: RandomAccessFile相关推荐

  1. JAVA IO - RandomAccessFile Seek学习

    2019独角兽企业重金招聘Python工程师标准>>> JAVA IO - RandomAccessFile Seek学习 import java.io.RandomAccessFi ...

  2. JAVA IO - RandomAccessFile

    2019独角兽企业重金招聘Python工程师标准>>> RandomAccessFile The RandomAccessFile class in the Java IO API ...

  3. java urlconn 下载慢_使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法...

    import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAc ...

  4. 五.Java IO、NIO、文件、通讯

    2019独角兽企业重金招聘Python工程师标准>>> Java 的 I/O 大概可以分成四组: 基于字节操作的 I/O :InputStream 和 OutputStream 基于 ...

  5. Java.io包中常用的类

    Java.io包 Java.io.BufferedInputStream类实例 Java.io.BufferedOutputStream类使用例子 Java.io.BufferedReader类 Ja ...

  6. 文件传输基础——Java IO流

    一.文件的编码 1 package com.study.io; 2 3 4 /** 5 * 测试文件编码 6 */ 7 public class EncodeDemo { 8 9 /** 10 * @ ...

  7. 迁移学习 简而言之_简而言之Java.io:22个案例研究

    迁移学习 简而言之 这篇文章试图涵盖java.io中的一整套操作. 与与此主题相关的其他书籍和博客相比,我的动机是通过案例研究来展示"操作方法". 曾经是Java的学生,我意识到学 ...

  8. 简而言之Java.io:22个案例研究

    这篇文章试图涵盖java.io中的一整套操作. 与与此主题相关的其他书籍和博客相比,我的动机是通过案例研究展示"操作方法". 作为一名Java的学生,我意识到学习一种新的程序语言的 ...

  9. java.io.file.sync_Java(25)IO流和File类

    IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...

最新文章

  1. 标准化是RFID发展的必由之路
  2. 接口返回json对象出现套娃递归问题 | System.Text.Json 版本
  3. 液体火箭发动机技术国家级重点实验室2021年度对外开放项目指南
  4. 【网站】网站不能在QQ,微信中访问,申诉办法
  5. slf4j使用(二)
  6. java实现rabbitmq任务模型(work queues), 生产者 消费者 消息队列 能者多劳
  7. mount: RPC: Unable to receive; errno = Connection refused 的解决方法
  8. [Git] Squash all of my commits into a single one and merge into master
  9. 【原创】ESXI获取虚拟机的moid,并使用VMRC登录远程虚拟机
  10. android 飞行模式 配置 wifi可用,飞行模式下使用WiFi教程
  11. UFS 3.1协议分析(第一至四章) -- UFS概述
  12. 共用体union与枚举enum(C++)
  13. Android aab打包
  14. SAP采购订单价格与信息记录价格不匹配
  15. 爱剪辑 for Mac全能视频剪辑软件
  16. 流媒体高清视频校园直播点播
  17. TP5生成二维码教程
  18. 一键屏蔽百度热搜,专注工作!
  19. 计算机专业的创意文案,高考借势广告文案又双叒叕来了,这些借势扎心了!
  20. 邻接矩阵/图/DFS/BFS

热门文章

  1. 7-9 删数问题 (10 分)(思路加详解)
  2. [MyBatisPlus]模拟多数据源环境及测试
  3. [Java基础]IO流小结
  4. [蓝桥杯][历届试题]网络寻路-dfs,图的遍历
  5. C++实现链式存储线索二叉树
  6. 第二个一千行总结-数据结构C复习--知识点总结2--五到七章
  7. SpringMVC 、Struts的区别
  8. 采蘑菇的克拉莉丝(树链剖分)
  9. CF1000G. Two-Paths(树形dp)
  10. LCS(2021牛客多校4)