[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参数的对照表:

【java IO流】之 随机访问文件(RandomAccessFile类)

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());//转换为字节数组然后写入

结果图:

【java IO流】之 随机访问文件(RandomAccessFile类)

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

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());

结果图:

【java IO流】之 随机访问文件(RandomAccessFile类)

注意:RandomAccessFile 读写文件时,不管文件中保存的数据编码格式是什么 使用 RandomAccessFile对象方法的 readLine() 都会将编码格式转换成 ISO-8859-1 所以 输出显示是还要在进行一次转码。在使用的过程中,一定要注意编码格式。
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!