Java随机流--RandomAccessFile

什么是RandomAccessFile?

RandomAccessFile创建的对象既可以作为源也可以作为目的地

该类的实例支持读取和写入随机访问文件。 随机访问文件的行为类似于存储在文件系统中的大量字节。 有一种游标,或索引到隐含的数组,称为文件指针 ; 输入操作读取从文件指针开始的字节,并使文件指针超过读取的字节。 如果在读/写模式下创建随机访问文件,则输出操作也可用; 输出操作从文件指针开始写入字节,并将文件指针提前到写入的字节。 写入隐式数组的当前端的输出操作会导致扩展数组。 文件指针可以通过读取getFilePointer方法和由设置seek方法。

通俗来讲:我们以前讲的 IO 字节流,包装流等都是按照文件内容的顺序来读取和写入的。而这个随机访问文件流我们可以在文件的任意地方写入数据,也可以读取任意地方的字节。

构造方法

在这里插入图片描述
这里面第二个参数:String mode 有以下几种形式:
在这里插入图片描述
第一种:用 随机流顺序读取数据
在这里插入图片描述
第二种:随机读取,那么我们先介绍这两个方法 :
在这里插入图片描述
这里所说的偏移量,也就是字节数。一个文件是有N个字节数组成,那么我们可以通过设置读取或者写入的偏移量,来达到随机读取或写入的目的。

这是Java里各个数据类型的字节数:
在这里插入图片描述
下面是 随机读取数据例子:

在这里插入图片描述
随机流复制文件:
在这里插入图片描述
注意:

RandomAccessFile流的readline()方法在读取含有非ASCII码字符的文件时(比如含有汉字)会出现乱码,因此,需要把readline()读取的字符串用ISO-8859-1重新编码存放到byte数组中,然后用计算机的默认编码将该数组转化为字符串,
操作如下:

RandomAccessFile inAndout2 = new RandomAccessFile( file2, "rw" );
String str = inAndout2.readLine();
byte b[] = str.getBytes("ISO-8859-1");
String transformResult = new String(b,"GBK");
System.out.println( transformResult );
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值