1. package stream;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.RandomAccessFile;
  7.  
  8. import org.junit.jupiter.api.Test;
  9.  
  10. /*
  11. * RandomAccessTile:随机读写访问流
  12. * 既可以是输入流,也可以是输出流
  13. * r|w|d|s:读|写|更新数据|元数据更新
  14. *
  15. * w:是对开头对文件内容进行覆盖
  16. *
  17. * */
  18.  
  19. public class RandomAccessFileTest {
  20.  
  21. @Test
  22. public void test1(){
  23.  
  24. RandomAccessFile raf1 = null;
  25. RandomAccessFile raf2 = null;
  26. try {
  27. //1.流对象
  28. raf1 = new RandomAccessFile(new File("hello.txt"),"r");
  29. raf2 = new RandomAccessFile(new File("hello2.txt"),"rw");
  30.  
  31. //2.读写
  32. byte[] buffer = new byte[1024];
  33. int len;
  34. while((len = raf1.read(buffer))!=-1) {
  35. raf2.write(buffer,0,len);
  36. }
  37. } catch (Exception e) {
  38.  
  39. e.printStackTrace();
  40. }
  41. finally {
  42. try {
  43. if(raf1!=null)
  44. raf1.close();
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. try {
  49. if(raf2!=null)
  50. raf2.close();
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. }
  56.  
  57. /*
  58. * seek随机访问|插入方法
  59. *
  60. * */
  61. @Test
  62. public void test2() throws IOException {
  63. RandomAccessFile raf1 = new RandomAccessFile("hello.txt", "rw");
  64. /*raf1.seek(3);
  65. raf1.write("abc".getBytes());
  66. */
  67. /*
  68. * 使用StringBuilder
  69. * */
  70. StringBuilder sb = new StringBuilder((int)(new File("hello.txt").length()));
  71. raf1.seek(3L);
  72. int len;
  73. byte[] buffer = new byte[20];
  74. while((len = raf1.read(buffer))!=-1) {
  75. sb.append(new String(buffer,0,len));
  76. }
  77.  
  78. raf1.seek(3L);
  79. raf1.write("xyz".getBytes());
  80. raf1.write(sb.toString().getBytes());
  81. raf1.close();
  82. }
  83.  
  84. }

java 随机读写访问流及seek方法的更多相关文章

  1. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  2. java 21 - 12 随机访问流(不属于IO流)

    随机访问流: RandomAccessFile类不属于流,是Object类的子类. 但它融合了InputStream和OutputStream的功能. 支持对文件的随机访问读取和写入. public ...

  3. Java基础知识强化之IO流笔记63:随机访问流RandomAccessFile

    1. 随机访问流RandomAccessFile RandomAccessFile类不属于流,是Object类的子类.但它融合了InputStream和OutputStream的功能.支持对随机访问文 ...

  4. Java IO流之随机读写流RandomAccessFile

    随机读写流RandomAccessFile 简介 此类的实例支持对随机访问文件的**读取和写入**. 随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组. 存在指向该隐含数组的光标或索引 ...

  5. Java IO流-随机访问流

    2017-11-05 19:45:51 RandomAccessFile类(随机访问流) RandomAccessFile类:是Object的子类,此类的实例支持对随机访问文件的读取和写入.随机访问文 ...

  6. Java IO流之普通文件流和随机读写流区别

    普通文件流和随机读写流区别 普通文件流:http://blog.csdn.net/baidu_37107022/article/details/71056011 FileInputStream和Fil ...

  7. Java知多少(72)文件的随机读写

    Java.io 包提供了 RandomAccessFile 类用于随机文件的创建和访问.使用这个类,可以跳转到文件的任意位置读写数据.程序可以在随机文件中插入数据,而不会破坏该文件的其他数据.此外,程 ...

  8. Java编程的逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  9. [19/04/03-星期三] IO技术_其它流(RandomAccessFile 随机访问流,SequenceInputStream 合并流)

    一.RandomAccessFile 随机访问流 [版本1] /* *RandomAccessFile 所谓随机读取就是 指定位置开始或指定位置结束 的读取写入文件 * 实现文件的拆分与合并 模拟下载 ...

随机推荐

  1. apktool介绍

    apktool可以反编译出app的资源文件,apktool工具的下载路径:https://ibotpeaches.github.io/Apktool/ 下载后获取到一个jar文件,可以通过如下命令进行 ...

  2. C#-概念-基础类库:基础类库

    ylbtech-C#-概念-基础类库:基础类库 基础类库 (BCL) 是微软所提出的一组标准库可提供.NET Framework所有语言使用. 随着 Windows 以及 .NET Framework ...

  3. mysql一主多从配置详情

    https://www.cnblogs.com/zgx/archive/2011/09/13/2174823.html 1.准备好3台虚机,一台master,两台slave且都安装好mysql 2.主 ...

  4. Vagrant 入门 - 启动 vagrant 及 通过 ssh 登录虚拟机

    原文地址 在终端运行 vagrant up 命令即可启动 Vagrant 环境: $ vagrant up 不到一分钟,命令就会执行完毕,运行 Ubuntu 的虚拟机会启动成功.Vagrant 运行虚 ...

  5. Python算法每日一题--001--给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...

  6. Unity3D架构之PureMVC

    之前了解过UI实现框架大多是用MVC架构的,才听说有这么一个基于MVC的跨平台开源框架叫PureMVC,前几天用到了做了一下,写一写分析总结官网位置:http://puremvc.org/ PureM ...

  7. Junit测试错误:### Error building SqlSession

    错误代码: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession.### The error ...

  8. [HDU 1529]Cashier Employment(差分约束系统)

    [HDU 1529]Cashier Employment(差分约束系统) 题面 有一个超市,在24小时对员工都有一定需求量,表示为\(r_i\),意思为在i这个时间至少要有i个员工,现在有n个员工来应 ...

  9. 如何创建 Qt 插件?

    如何创建 Qt 插件? 简单三部曲 定义接口类或接口基类并使用 Q_DECLARE_INTERFACE 宏进行声明 所有的插件都需要继承该基类并继承 QObject(不带界面插件) or QWidge ...

  10. C# PDF文件转图片

    参考:https://blog.csdn.net/lai124793549/article/details/53392281 https://www.cnblogs.com/xiewei123/p/1 ...