------- android培训、java培训、期待与您交流! ----------

RandomAccessFile是java输入/输出流体系中功能最丰富的问几十年内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,RandomAccessFile支持“随机访问”的方式。程序可以直接跳转到文件的任意地方来读写数据。

由于RandomAccessFile可以自由访问文件的任意位置,所以如果只需要访问文件部分内容,而不是把文件从头读到尾,使用RandomAccessFile将是更好的选择。

与OutputStream Writer等输出流不同的是,RandomAccessFile允许自由定温文件记录指针,RandomAccessFile可以不从开始的地方开始输出,因此RandomAccessFile可以向以存在的文件后追加内容,如果程序需要向以存在的文件后追加内容,则应该使用RandomAccessFile

RandomAccessFile的方法虽然很多,但它有一个最大的局限,就是只能读写文件,不能读写其他IO节点。

RandomAccessFile对象也包含了一个记录指针,用以标识当前读写的位置,当程序新创建一个RandomAccessFile对象时,该对象的文件记录指针位于文件头,但读/写了N个字节后,文件记录指针将会向后移动N个字节。初次之外,RandomAccessFile可以自由移动该记录指针,既可以向前移动,也可以向后移动。RandomAccessFile包含了如下两个方法来操作文件记录指针。

1:long getFilePointer():返回文件记录指针的当前位置。

2:void seek(long pos): 将文件记录指针定位到pos位置。

RandomAccessFile既可以读文件,也可以写,所以它即包含了完全类似与InputStream的三个read()方法,其用法和InputStream的三个read()方法完全一样;也包含了完全类似于OutputStream的三个write()方法,其用法和OutputStream的三个Write()方法完全一样。除此之外,RandomAccessFile还包含了一些列的readXxx()和WriteXxx()方法来完成输入,输出。

RandomAccessFile有两个构造器,其实这两个构造器基本相同,只是指定文件的形式不同而已,一个使用String参数来指定文件名,一个使用File参数来指定文件本身。除此之外创建RandomAccessFile对象时还需要指定一个mode参数,该参数指定RandomAccessFile的访问模式,该参数有如下四个值。

"r": 以只读方式打开指定文件,如果视图对该RandomAccessFile执行写入方法,将抛出异常。

"rw":以读/写方式打开指定文件。如果该文件不存在,则尝试创建该文件。

"rws":以读/写方式打开指定文件。相对于"rw"模式,还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。

"rwd":以读/写方式打开指定文件。相对于"rw"模式,还要求对文件的内容的每个更新都同步写入到底层存储设备。

下面程序使用了RandomAccessFile来访问指定的中间部分数据。

 1 public class RandomAccessFileTest
 2 {
 3     public static void main(String[] args)
 4     {
 5         try(
 6             RandomAccessFile raf = new RandomAccessFile("a.txt", "r"))
 7         {
 8             //获取RandomAccessFile对象文件指针的位置,初始位置是0
 9             System.out.println("RandomAccessFile的文件初始位置:" + raf.getFilePointer());
10             //移动raf的文件记录指针位置
11             raf.seek(300);
12             byte[] by = new byte[1024];
13
14             //用于保存实际读取的字节数
15             int hasRead = 0;
16
17             //读取
18             while((hasRead = raf.read(by)) > 0)
19             {
20                 //将字节数组转换为字符串
21                 System.out.println(new String(by, 0, hasRead));
22             }
23         }
24         catch(IOException ex)
25         {
26             ex.printStackTrace();
27         }
28
29
30     }
31 }

上面程序创建了RandomAccessFile对象,该对象以只读方式打开了a.tat文件,这意味着该

转载于:https://www.cnblogs.com/-9527/p/5218933.html

黑马程序员—————— 随机访问流相关推荐

  1. 黑马程序员——Java字符流、字节流IO流

    黑马程序员--Java字符流.字节流Io流 ---------------------- <a href="http://www.itheima.com"target=&qu ...

  2. 黑马程序员-10 IO流2 File,properties,合并流,对象持久化,管道流,RandomAccessFile...

    ------- android培训.java培训.期待与您交流! ---------- File 将文件和文件夹封装成对象 File类常见方法: 1,创建. boolean createNewFile ...

  3. 黑马程序员——随机菜谱

    ----------------------    android培训    java培训   期待与您交流!    ----------------------    import java.uti ...

  4. 黑马程序员——总集篇

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 本人编写技术博客的时候只是针对章节的一些比较重要的知识点来编写的: 个人感觉质量 ...

  5. 黑马程序员-Java教程-10缓冲流、转换流、序列化流

    day10[缓冲流.转换流.序列化流.打印流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本 ...

  6. 黑马程序员_JAVA之IO流的(转换流,数据输入输出流等)

    ------- android培训.java培训.期待与您交流!---------- IO流: 笔记内容:转换流,字节输入输出流,数据输入输出流,内存操作流,随机访问流 打印流,对象序列化流,Prop ...

  7. 黑马程序员_JAVA之IO流(其他IO流)

    ------- android培训.java培训.期待与您交流!---------- 一:转换流 转换流实际上就是字符流 OutputStreamWriter:输出转换流 构造方法: 传入一个相应的字 ...

  8. 黑马程序员入学Java知识——精华总结

    黑马程序员入学Java知识--精华总结 J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结! 一.黑马程序员-java概述与基础知识 6 1.何为编程? 6 2.Java语言 ...

  9. 黑马程序员C++笔记

    C++ 课程链接: 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 一.C++基础语法 1.变量和常量数据 1.1第一个C++程序 编写一个C++程序总共分 ...

最新文章

  1. oracle sys改密码,Oracle修改SYS密码
  2. 剖析 | torch.nn.functional.softmax维度详解
  3. SAP S/4HANA里的生产订单,标识其已经结束生产可以发货的字段
  4. PAT乙级题目——1002写出这个数
  5. createform用法_vue自定义表单生成器form-create使用详解
  6. 用一个参数化的模型来投影点
  7. 喜笑等动作收集起来的扎金花GAME
  8. Windows 2000/XP中对窗口进行透明化
  9. 短小有趣的c语言代码,分享一段有趣的小代码
  10. sshclientCRT连接linux使用技巧
  11. jQuery mobile网格布局
  12. 全链路异步Rest客户端 ESA RestClient
  13. matlab求内切圆,MATLAB求图形的最大内切圆代码
  14. pandas用in筛选数据
  15. ansible ---- 主机文件编写--在运行时显示自定义主机名称
  16. bi 工具 市场排行榜_现在市场上的主流BI工具有哪几个
  17. 美国公司暂停镰状细胞基因疗法临床试验:两受试者发展为癌症
  18. SaToken技术分享文档
  19. 鲍鱼数据集的可视化展示
  20. 温州大学c语言期末试卷,2016年温州大学物理与电子信息工程学院综合卷之C语言程序设计复试笔试最后押题五套卷...

热门文章

  1. Android 蓝牙遥控器的连接
  2. std c++ 获取运行时间封装
  3. webrtc静音检测
  4. 计算机制说明书的实训报告,实训报告总结
  5. 怎么看android底层源码,Android底层有必定的认识,研究过相关的Android源码
  6. java中类的方法分为 类方法_Java中类的方法成员分为()方法和实例方法。
  7. html背景图适应div_CSS实现背景图片屏幕自适应
  8. c++ 标准异常类层次结构_Java入门教程十一(异常处理)
  9. 【算法】java 用 数组 模拟 队列
  10. 【es】es 的 cat API是如何加载的