[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参数的对照表:
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());//转换为字节数组然后写入
结果图:
可见,使用自带的编码写入,会出现乱码,如果转换为字节数组写入,不会出现乱码。
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());
结果图:
注意:RandomAccessFile 读写文件时,不管文件中保存的数据编码格式是什么 使用 RandomAccessFile对象方法的 readLine() 都会将编码格式转换成 ISO-8859-1 所以 输出显示是还要在进行一次转码。在使用的过程中,一定要注意编码格式。
本作品采用《CC 协议》,转载必须注明作者和本文链接