Android创建缓存文件并使用流读取
来源:互联网 发布:阿里云和腾讯云的区别 编辑:程序博客网 时间:2024/05/11 04:30
最近项目中使用到文件缓存,在文件流使用的时候遇到一点坑,Mark一下。
一、Android下创建应用缓存文件目录:
File path = context.getDir(String dirName, Context.MODE_PRIVATE);
使用Context的getDir()方法,传入:
参数1:目录名;
参数二:模式(应用私有,还是公共)。
如果该目录存在,会返回一个对应的File对象;如果不存在,会创建该目录,并返回。
二、获取缓存文件
File file = new File(File path, String fileName);
使用File对象的构造方法,取得需要的文件对象,但是该对象可能会不存在,如果是读取文件,需要使用以下方式来判断:(注意不要使用(null == file),文件不存在,也不返回null)
file.exists()
三、使用BufferedOutputStream对文件写入
BufferedOutputStream提供一个默认大小的缓冲区,缓冲输出流收集写入的字符以避免每次写入都引起对设备的访问,当缓冲区满或流被刷新时,数据被写入设备,能够提升文件操作的性能。定义一个文件输出流,使用如下方式即可:
BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(file));
new FileOutputStream(File file)),该构造方法新建一个指定文件的输出流(会自动删除已经存在的同名文件)。使用如下代码写入数据:
fos.write(byte[] buffer, int offset, int length);
读取buffer内从offset往后length长的数据写入缓冲区,最后几段刷新并关闭输出流:
fos.flush();//刷新fos.close();
四、使用BufferedInputStream读取文件
代码如下:
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
读取前记得对文件file做判断 ,file.exists()。
注意:
在对输入流使用如下方式读取时:
int len;byte[] buf = new byte[1024];while ((len = bis.read(buf)) > 0) {//将数据从输入流bis读到内存buf fos.write(buf, 0, len);//将内存数据buf写入缓冲区fos}fos.flush();//将缓冲区数据fos写入到文件fos.close();******************11111***************
程序执行到“11111”处时,bis 中数据已经处理完毕,这是再次对 bis 访问,也取不到任何数据了,被这一点坑了许久。
0 0
- Android创建缓存文件并使用流读取
- 使用eclipse创建,并读取yaml文件
- Java创建文件并使用BufferedInputStream读取文件内容
- 读取并创建资源文件
- 读取并创建资源文件
- 使用dom4j创建XML文件,并读取XML内容
- mapreduce中读取文件并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- android读取大图片并缓存
- Android读取网络图片并缓存
- android读取大图片并缓存
- Android使用iText生成pdf文件并读取pdf内容
- 收藏表 数据库设计
- SqlServer存储过程输出参数
- 项目总结1 UITabBarController为根视图的界面搭建
- 彻底理解java语言的线程安全volatile用法
- Android Notification通知栏的必备姿势
- Android创建缓存文件并使用流读取
- kALMAN滤波器的理解
- 获取文件详细信息
- 装机
- 在intelliJ IDEA下在web项目中使用hibernate出现java.lang.ClassNotFoundException: org.hibernate.criterion.Criteri
- DOM、JDOM、DOM4J
- MySQL DATE_FORMAT() 函数
- hdu 1024
- unity游戏优化之ETC压缩和 Alpha通道处理