ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RandomAccessFile类-随机存取文件流

2022-05-18 20:01:52  阅读:158  来源: 互联网

标签:文件 java 随机存取 RandomAccessFile IOException import new raf1


RandomAccessFile 声明在 java . io 包下,但直接继承与 java . lang . Object 类。并且它实现了 DataInput、DataOutput 这两个接口,也就意味着这个类既可以读也可以写。

 

RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件

支持只访问文件的部分内容

可以向已存在的文件后追加内容

RandomAccessFile 对象包含一个记录指针,用以表示当前读写的位置

创建 RandomAccessFile 类实例需要指定一个 mode 参数,该参数指定 RandomAccessFile 的访问模式

r:以只读的方式打开

rw:打开以便读取和写入

rwd:打开以便读取和写入;同步文件内容的更新

rws:打开以便读取和写入;同步文件内容和元数据的更新

 

实现数据的存取

 1 import java.io.File;
 2 import java.io.IOException;
 3 import java.io.RandomAccessFile;
 4  
 5 public class RandomAccessFileTest {
 6     public void RandomAccessFileTest() {
 7         RandomAccessFile raf1 = null;
 8         RandomAccessFile raf2 = null;
 9         try {
10             raf1 = new RandomAccessFile(new File("saber.jpg"),"r");
11             raf2 = new RandomAccessFile(new File("saber1.jpg"),"rw");
12             byte[] buffer = new byte[1024];
13             int len;
14             while ((len = raf1.read(buffer)) != -1){
15                 raf2.write(buffer,0,len);
16             }
17         } catch (IOException e) {
18             e.printStackTrace();
19         } finally {
20             try {
21                 raf1.close();
22             } catch (IOException e) {
23                 e.printStackTrace();
24             } finally {
25                 try {
26                     raf2.close();
27                 } catch (IOException e) {
28                     e.printStackTrace();
29                 }
30             }
31         }
32     }
33 }

 

实现在指定位置插入数据

 1 //在文件内容索引位置为3处插入数据
 2 import org.junit.Test;
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.io.RandomAccessFile;
 6  
 7 public class RandomAccessFileTest {
 8     @Test
 9     public void RandomAccessFileTest() {
10         RandomAccessFile raf1 = null;
11         try {
12             raf1 = new RandomAccessFile("hello.txt","rw");
13             raf1.seek(3);//将指针调到角标为3的位置
14             //保存指针3后面的所有数据到StringBuilder中
15             StringBuilder builder = new StringBuilder((int) new File("hello.txt").length());
16             byte[] buffer = new byte[20];
17             int len;
18             while ((len = raf1.read(buffer)) != -1){
19                 builder.append(new String(buffer,0,len));
20             }
21             //回调指针,写入“abc”
22             raf1.seek(3);
23             raf1.write("abc".getBytes());
24             //将StringBuilder中的数据写入到文件中
25             raf1.write(builder.toString().getBytes());
26         } catch (IOException e) {
27             e.printStackTrace();
28         } finally {
29             try {
30                 if (raf1 != null)
31                 raf1.close();
32             } catch (IOException e) {
33                 e.printStackTrace();
34             }
35         }
36     }
37 }

 

标签:文件,java,随机存取,RandomAccessFile,IOException,import,new,raf1
来源: https://www.cnblogs.com/zyx9710/p/16286084.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有