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 http上传文件
- 深入分析android中用SAX解析XML文件并纠错
- android展讯平台重要的打包命令及生成镜像文件的Linux命令
- Android开发之网络请求通信专题(二):基于HttpClient的文件上传下载
- Android学习札记44:解读APK反编译后得到的布局文件
- android文件系统及其制作
- Android中如何反编译apk文件
- Android多媒体--访问网络上的Audio对应的M3U文件,实现网络音频流