今天,简单讲讲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 从文件制定位置读取数据就讲完了。


就这么简单。



更多相关文章

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

随机推荐

  1. Android网络状态获取类 在api 29中 Netwo
  2. 使用mapbar 地图sdk要关闭硬件加速
  3. 使用Android Instrument 自动测试 WIFI_S
  4. Android 的 Recovery 分析
  5. ListView美化
  6. Android添加用户组及自定义App权限
  7. 你真的了解你手机的状态栏吗?
  8. [转]Android文件管理器介绍
  9. android studio的问题整理(如何删除模块(M
  10. 如何使用appium desktop 获取Android(安