android 从文件制定位置读取数据

释放双眼,带上耳机,听听看~!

今天,简单讲讲android 如何从制定的位置读取文件。

之前,我写了使用FileInputStream使用read(byte[] b)读取文件的博客,每次调用read()时,FileInputStream会自动向后移位读取的数据长度。那如何我想读取之前已经的读取的数据那应该怎么办呢?在网上搜索了资料,最终解决了问题。

从文件指定位置开始读取文件流

文件任意位置读取
一般有两种方法:
1、使用FileInputStream类 , skip指定位置
2、使用RandomAccessFile类,seek指定位置

 

这里我只简单讲讲使用FileInputStream如何定位。对于RandomAccessFile,有兴趣的可以自己去查找。

 

具体使用的是FileInputStream的skip(int position),这个参数里的position为正数时,读取文件的起始位置会向后移动position个字节,当position为负数时,读取文件的文章会向后移动position个字节。通过这样就可以读取自己需要的位置的数据。

这里还介绍另一种定位的代码:

Java  InputStream  的mark 和reset操作
mark用于标记当前位置;FileInputStream不支持mark和reeset两个函数;

但是BufferedInputStream支持此操作;

通过mark(readlimit)标记后,后续调用reset()函数,就会使文件流重新回到mark位置,达到重新利用。

如果不是用mark,那么你读到文件末尾后就不能继续重新读了。

mark 和reset要配合使用。

FileInputStream infile = new FileInputStream(“test.txt”);
buffedfile = new BufferedInputStream(infile);
buffedfile.mark(available());
//对buffedfile 进行读取操作,读取之后

buffedfile.reset();

然后你可以继续使用buffedfile。否则你就不能再用了。此程序相当于从文件流第一offset开始使用,当然,如果你read n个字节之后,然后再mark,那么你下次reset,就从n以后开始利用文件流了。

 

android 从文件制定位置读取数据就讲完了。

 

就这么简单。

人已赞赏
Android文章

android 获取文件大小

2020-4-8 19:03:26

Android文章

android BufferedOutputStream的使用

2020-4-8 20:18:07

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索