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

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

  public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模

mode:参数指定用以打开文件的访问模式。允许的值及其含意为:

含意

"r"以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException
"rw"打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws"打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
"rwd"  打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。  

 

 

 

 

 

 

 

模式有四种,我们最常用的一种叫"rw",这种方式表示既可以写数据,也可以读取数据 

 

首先,我们创建一个随机访问流,并写入数据

 1     private static void write() throws IOException {
 2         // 创建随机访问流对象
 3         RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");
 4 
 5         // 可以写入任何类型数据
 6         raf.writeInt(100);
 7         raf.writeChar('a');
 8         raf.writeUTF("中国");
 9 
10         raf.close();
11     }

 

再试下随机访问流的读取:

 1 private static void read() throws IOException {
 2         // 创建随机访问流对象
 3         RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");//不管读写,这个代码都一样
 4 
 5         int i = raf.readInt();
 6         System.out.println(i);
 7         // 该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。
 8         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());//4
 9 
10         char ch = raf.readChar();
11         System.out.println(ch);
12         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());//6
13 
14         String s = raf.readUTF();
15         System.out.println(s);
16         System.out.println("当前文件的指针位置是:" + raf.getFilePointer());//16,在6+3+3后,还读取了2个字节+2 = 16
17 
18         // 如果只要读取a:
19         raf.seek(4);
20         ch = raf.readChar();//要清楚要读取的位置的数据是什么类型的,这里要对应类型的,否则会发现,输出的东西看不懂
21         System.out.println(ch);
22     }

 

转载于:https://www.cnblogs.com/LZL-student/p/5929373.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值