android 创建数据缓存文件怎么打开,Android创建缓存文件并使用流读取
最近项目中使用到文件缓存,在文件流使用的时候遇到一点坑,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创建缓存文件并使用流读取相关推荐
- navicat mysql 建表语句_Navicat for MySQL怎么/如何创建数据表?Navicat for MySQL创建数据表教程_斗蟹游戏网...
[斗蟹攻略]Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,下面就由斗蟹小编介绍Navicat for MySQL创建数据表的方法. Navic ...
- android导入html文件怎么打开,Android浏览器如何打开本地html文件
有两种方法:1.代码如下:Intent intent=new Intent(); intent.setAction(android.intent.action.VIEW); Uri CONTENT_U ...
- js 打开android浏览器,浏览器通过JS打开Android程序
做项目的时候,项目中有个需求,需要通过网页打开app,听到这个功能,我先是蛋疼了一会,但是在网上查了一下资料发现原理其实很简单,本质就是通过浏览器输入我们本地android程序的路径,不过这个路径需要 ...
- php语句创建数据表,用mysql语句创建数据表详细教程
MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...
- android存储pdf文件怎么打开,android打开pdf文件
我们在工作中肯定有需要,加载pdf或者doc的地方,但是,android没有提供一个好的打开方法,我又想吐槽下,人家ios可以直接打开的.. 有2钟方法打开pdf.doc. 方法一: 利用Intent ...
- android本地xml文件怎么打开,android 打开本地文件
首先要知道的是,Android 打开本地文件是根据类型打开的,也就是根据文件的 MIME 类型来确定 如果不知道是什么类型,那就是 : */* 类型匹配表: private static final ...
- Day002--MySQL中的图形工具的使用并创建数据表及查看表
目录 使用Navicat premium创建数据表 Navicat 里面创建我们数据表 使用图形化的界面来创建数据表 使用命令行的方式来创建数据表 使用SQLyog创建数据表 使用Navicat pr ...
- oracle创建数据库命令
oracle创建数据库命令 1.打开cmd 连接系统默认数据库 2. 创建表空间 CREATE TABLESPACE DATA DATAFILE 'D:\oracle\DATA\DATA.ORA' s ...
- Java实训项目9:GUI学生信息管理系统 - 实现步骤 - 创建数据访问接口
文章目录 七.实现步骤 (五)创建数据访问接口 1.创建学校数据访问接口 2.创建状态数据访问接口 3.创建学生数据访问接口 4.创建用户数据访问接口 七.实现步骤 (五)创建数据访问接口 DAO: ...
最新文章
- Ubuntu16.04如何彻底删除Apache2
- 【转载】iOS堆和栈的理解
- python 错误类型
- 基于51的串行通讯原理及协议详解(uart)
- java stream 多个filter_如何在Java Stream上应用多个过滤器?
- 2018.11.05-4028-撸串(string)
- linux的RPM支持图片格式,Linux下rpm、yum和源码三种安装方式详细介绍
- 利用 HttpModule,基于输出,统一控制、干预、处理(例如: 过滤关键字、AntiXSS) ASP.Net WebForm Control 展现属性的方案原型...
- 2020年值得收藏与学习280多款H5小游戏,从入门到彻底了解它(附源码)
- CISSP国际注册信息系统安全专家
- 借贷行业,还有明天吗?
- WSO2 ESB 5.0.0 配置消息存储
- 图书馆管理系统(一)
- python强行终止程序_python终止程序的方法
- 初始C语言之简单认识C语言-1
- 【问题解决】This scheduler instance is still active but was recovered by another instance in the cluster.
- 使用FOP将xml转换pdf
- New File(.)
- springboot mybatis大学生校园宿舍管理系统源码含文档
- 混响(Reverb)/空间音效(Panning)