最近项目中使用到文件缓存,在文件流使用的时候遇到一点坑,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 访问,也取不到任何数据了,被这一点坑了许久。

android 创建数据缓存文件怎么打开,Android创建缓存文件并使用流读取相关推荐

  1. navicat mysql 建表语句_Navicat for MySQL怎么/如何创建数据表?Navicat for MySQL创建数据表教程_斗蟹游戏网...

    [斗蟹攻略]Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,下面就由斗蟹小编介绍Navicat for MySQL创建数据表的方法. Navic ...

  2. android导入html文件怎么打开,Android浏览器如何打开本地html文件

    有两种方法:1.代码如下:Intent intent=new Intent(); intent.setAction(android.intent.action.VIEW); Uri CONTENT_U ...

  3. js 打开android浏览器,浏览器通过JS打开Android程序

    做项目的时候,项目中有个需求,需要通过网页打开app,听到这个功能,我先是蛋疼了一会,但是在网上查了一下资料发现原理其实很简单,本质就是通过浏览器输入我们本地android程序的路径,不过这个路径需要 ...

  4. php语句创建数据表,用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

  5. android存储pdf文件怎么打开,android打开pdf文件

    我们在工作中肯定有需要,加载pdf或者doc的地方,但是,android没有提供一个好的打开方法,我又想吐槽下,人家ios可以直接打开的.. 有2钟方法打开pdf.doc. 方法一: 利用Intent ...

  6. android本地xml文件怎么打开,android 打开本地文件

    首先要知道的是,Android 打开本地文件是根据类型打开的,也就是根据文件的 MIME 类型来确定 如果不知道是什么类型,那就是 : */* 类型匹配表: private static final ...

  7. Day002--MySQL中的图形工具的使用并创建数据表及查看表

    目录 使用Navicat premium创建数据表 Navicat 里面创建我们数据表 使用图形化的界面来创建数据表 使用命令行的方式来创建数据表 使用SQLyog创建数据表 使用Navicat pr ...

  8. oracle创建数据库命令

    oracle创建数据库命令 1.打开cmd 连接系统默认数据库 2. 创建表空间 CREATE TABLESPACE DATA DATAFILE 'D:\oracle\DATA\DATA.ORA' s ...

  9. Java实训项目9:GUI学生信息管理系统 - 实现步骤 - 创建数据访问接口

    文章目录 七.实现步骤 (五)创建数据访问接口 1.创建学校数据访问接口 2.创建状态数据访问接口 3.创建学生数据访问接口 4.创建用户数据访问接口 七.实现步骤 (五)创建数据访问接口 DAO: ...

最新文章

  1. Ubuntu16.04如何彻底删除Apache2
  2. 【转载】iOS堆和栈的理解
  3. python 错误类型
  4. 基于51的串行通讯原理及协议详解(uart)
  5. java stream 多个filter_如何在Java Stream上应用多个过滤器?
  6. 2018.11.05-4028-撸串(string)
  7. linux的RPM支持图片格式,Linux下rpm、yum和源码三种安装方式详细介绍
  8. 利用 HttpModule,基于输出,统一控制、干预、处理(例如: 过滤关键字、AntiXSS) ASP.Net WebForm Control 展现属性的方案原型...
  9. 2020年值得收藏与学习280多款H5小游戏,从入门到彻底了解它(附源码)
  10. CISSP国际注册信息系统安全专家
  11. 借贷行业,还有明天吗?
  12. WSO2 ESB 5.0.0 配置消息存储
  13. 图书馆管理系统(一)
  14. python强行终止程序_python终止程序的方法
  15. 初始C语言之简单认识C语言-1
  16. 【问题解决】This scheduler instance is still active but was recovered by another instance in the cluster.
  17. 使用FOP将xml转换pdf
  18. New File(.)
  19. springboot mybatis大学生校园宿舍管理系统源码含文档
  20. 混响(Reverb)/空间音效(Panning)

热门文章

  1. vscode生成html模板快捷键以及自定义html模板
  2. jQuery获取radio选中后的文字
  3. Logistic 回归 (LR)推导
  4. 脸上有点点雀斑真是很烦人的事,能不能不去美容院就能去掉雀斑呢?
  5. MES管理系统的“五步走”策略,改善车间的管理模式
  6. cursor(游标)
  7. EXCEL 数据有效性设置
  8. 虚拟化服务--KVM虚拟机的使用与管理
  9. 暗黑3:教你如何从建立战网到成功购买游戏
  10. ios 简单滤镜效果