Java-IO流系列-随机存取文件流
2021/6/27 12:14:32
本文主要是介绍Java-IO流系列-随机存取文件流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
随机存取文件流
简介
-
RandomAccessFile声明在java.io包下, 但直接继承于java.lang.Object类。 并且它实现了Datalnput. DataOutput这两 个接口,也就意味着这个类既可以读也可以写。
-
RandomAccessFile类支持“随机访问"的方式,程序可以直接跳到文件的任意地方来读、写文件
- 支持只访间文件的部分内容
- 可以向已存在的文件后追加内容
-
RandomAccessFile对象包含一个记录指针,用以标示当前读写处的位置。
-
RandomAccessFile类对象可以自由移动记录指针:
- long getFilePointer(): 获取文件记录指针的当前位置
- void seek(long pos): 将文件记录指针定位到pos位置
构造器
- public RandomAccessFile(File file, String mode)
- public RandomAccessFile(String name, String mode)
创建RandomAccessFile类实例需要指定一个mode参数,该参数指定RandomAccessFile的访问模式:
- r:以只读方式打开
- rw:打开以便读取和写入
- rwd:打开以便读取和写入;同步文件内容的更新
- rws:打开以便读取和写入:同步文件内容和元数据的更新
如果模式为只读r。则不会创建文件,而是会去读取一个已经存在的文件,如果读取的文件不存在则会出现异常。 如果模式为w读写。如果文件不存在则会去创建文件,如果存在则不会创建。
样例
复制文件
package com.dreamcold.io; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class Demo20 { public static void main(String[] args) throws IOException { RandomAccessFile raf1= new RandomAccessFile(new File("image.jpg"),"r"); RandomAccessFile raf2= new RandomAccessFile(new File("image4.jpg"),"rw"); byte[] buffer=new byte[1024]; int len; while((len=raf1.read(buffer))!=-1){ raf2.write(buffer,0,len); } raf1.close(); raf2.close(); } }
效果:
写入txt文件
如果RandomaccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建
如果写出到的文件存在,则会对原有文件内容进行覆盖。|
package com.dreamcold.io; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class Demo21 { public static void main(String[] args) throws IOException { RandomAccessFile raf1=new RandomAccessFile("hello1.txt","rw"); raf1.write("dreamcold".getBytes()); raf1.close(); } }
效果:
数据插入的效果
可以通过相关的操作,实现RandomAccessFile"插入重据的效果
package com.dreamcold.io; import java.io.IOException; import java.io.RandomAccessFile; public class Demo22 { public static void main(String[] args) throws IOException { RandomAccessFile raf1=new RandomAccessFile("hello1.txt","rw"); //将指针调到角标为3的位置 raf1.seek(3); //保存指针3之后的所有的数据到StringBuilder中 StringBuilder builder=new StringBuilder(); byte[] buffer=new byte[20]; int len; while ((len=raf1.read(buffer))!=-1){ builder.append(new String(buffer,0,len)); } //调回指针写入"xyz" raf1.seek(3); raf1.write("xyz".getBytes()); //将StringBuiler中的数据写入文件 raf1.write(builder.toString().getBytes()); raf1.close(); } }
结果:
这篇关于Java-IO流系列-随机存取文件流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解