java 随机访问文件_[java IO流]之 随机访问文件(RandomAccessFile类)

随机访问文件(RandomAccessFile类)

概述:

此类的实例支持对随机访问文件的读取和写入,RandomAccessFile类默认使用的编码是ISO-8859-1,所以在使用这个类的读写的时候,一定要注意编码格式。

特点:

1.RandomAccessFile类不属于流,是Object类的子类

2.包含了InputStream和OutputStream的功能

3.能支持读写基本类型

4.支持对随机访问文件的读取和写入

构造方法:

RandomAccessFile(String name,String mode)

RandomAccessFile raf=new RandomAccessFile("E:\\File\\2.txt", "r");

mode参数的对照表:

6a245ea1fc4729db0e050c734edbbee5.png

1.读取

使用RandomAccessFile类的readLine()读取文件的时候,会乱码,所以应该转换为支持的编码

RandomAccessFile raf=new RandomAccessFile("E:\\File\\2.txt", "r");

System.out.println(new String(raf.readLine().getBytes("ISO-8859-1"),"GBK"));

2.写入

RandomAccessFile raf=new RandomAccessFile("E:\\File\\5.txt", "rw");

raf.writeBytes("大家好,才是真的好!\n");//使用提供的编码写入

raf.write("大家好,才是真的好!".getBytes());//转换为字节数组然后写入

结果图:

61d154049de4a1727747e7d06ac20d49.png

可见,使用自带的编码写入,会出现乱码,如果转换为字节数组写入,不会出现乱码。

3.写入改进:

RandomAccessFile raf=new RandomAccessFile("E:\\File\\5.txt", "rw");

//转换成RandomAccessFile类对应的的编码

String s=new String("大家好,才是真的好!\n".getBytes(),"ISO-8859-1");

raf.writeBytes(s);

raf.write("大家好,才是真的好!".getBytes());

结果图:

109ba133dddff3b81a792e1b8e8e8f72.png

注意:RandomAccessFile 读写文件时,不管文件中保存的数据编码格式是什么 使用 RandomAccessFile对象方法的 readLine() 都会将编码格式转换成 ISO-8859-1 所以 输出显示是还要在进行一次转码。在使用的过程中,一定要注意编码格式。

本作品采用《CC 协议》,转载必须注明作者和本文链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值