Android 内部存储读写介绍
内部存储读写
内容介绍
Android系统允许应用程序创建仅能够自身访问的私有文件,文件保存在设备的内部存储器上,在Linux系统下的/data/data//files目录中
Android系统不仅支持标准Java的IO类和方法,还提供了能够简化读写流式文件过程的函数
openFileOutput()函数
openFileOutput()函数用于写入数据, 如果如果指定的文件不存在,则创建一个新的文件
public FileOutputStream openFileOutput(String name, int mode)
- 第1个参数是文件名称,这个参数不能包含描述
路径的斜杠 - 第2个参数是操作模式
- 函数的返回值是FileOutputStream类型
- Android系统支持四种文件操作模式
| 模式 | 说明 |
|---|---|
| MODE_PRIVATE | 私有模式, 缺陷模式, 文件仅能够被文件创建程序访问, 或具有相同UID的程序访问。 |
| MODE_APPEND | 追加模式, 如果文件已经存在, 则在文件的结尾处添加新数据。 |
| MODE_WORLD_READABLE | 全局读模式, 允许任何程序读取私有文件。 |
| MODE_WORLD_WRITEABLE | 全局写模式, 允许任何程序写入私有文件。 |
为了提高文件系统的性能,一般调用write()函数时,如果写入的数据量较小,系统会把数据保存在数据缓冲区中,等数据量累积到一定程度时再一次性的写入文件中,在调用close()函数关闭文件前,务必要调用flush()函数,将缓冲区内所有的数据写入文件
openFileInput()函数
- openFileInput()函数用于打开一个与应用程序联系的
私有文件输入流 - 当文件不存在时抛出FileNotFoundException 异常
- openFileInput()函数的语法格式如下
public FileInputStream openFileInput (String name)
- 参数是文件名称,同样不允许包含描述路径的斜杠
代码demo
因为文件操作可能会遇到各种问题而最终导致操作失败,因此代码应该使用try/catch捕获可能产生的异常
写入文件
final private String FILE_NAME = "text.txt";
//定义名称
try {
FileOutputStream fos = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);
//使用openFileOutput()函数以私有模式建立文件
String text = “demo”;
fos.write(text.getBytes());
//调用write()函数将数据写入文件
fos.flush();
//调用write()函数将数据写入文件
fos.close();
//调用close()函数关闭FileOutputStream
} catch (Exception e) {
Log.d("errMsg", e.toString());
}
读取文件
String FILE_NAME = "text.txt";
try {
//打开文件输入流
FileInputStream ios = openFileInput(FILE_NAME);
byte[] temp = new byte[1024];
StringBuilder sb = new StringBuilder("");
int len = 0;
//读取文件内容
while ((len = ios.read(temp)) > 0){
sb.append(new String(temp, 0, len));
}
//关闭输入流
ios.close();
String textContent = sb.toString();
}catch (Exception e) {
Log.d("errMsg", e.toString());
}
Android 内部存储读写介绍的更多相关文章
- Android用路径api在内部存储读写文件
复制并修改原有项目 复制之前创建的项目CC+CV操作 需要改动的地方: * 项目名字 * 应用包名 * R文件重新导包 接着修改件/AndroidManifest.xml中的包名:package=&q ...
- Android 在内部存储读写文件
文件读写操作* Ram内存:运行内存,相当于电脑的内存* Rom内存:内部存储空间,相当于电脑的硬盘* sd卡:外部存储空间,相当于电脑的移动硬盘在内部存储空间中读写文件>小案例:用户输入账号密 ...
- 如何导出android内部存储的文件(不用root)
这段时间公司项目,涉及到数据缓存,由于需要缓冲的数据太多.太大,通过网络请求,再缓存到本地sqlite数据库,太费时间,消耗流量.所以准备先在本地保存一个标准版sqlite数据库(包含数据),打包到a ...
- Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)
为了保证应用程序存储数据的安全性,开发人员在开发应用程序的过程中须要注意使用Android 应用程序的内部存储空间. 依据不同的要求.将相应的数据文件.缓存文件.暂时文件等分别存储在相应的位置. 注意 ...
- android 内部存储 安装apk
在做应用自动更新模块下载apk时遇到了内部存储和sd卡存储两种情况,存在sk卡中存储apk可以正常安装,可是在内部存储中安装apk时出现了parse error的问题. 在网上搜了搜,大致分为两种方案 ...
- Android 内部存储和外部存储
应用程序的一些配置文件需要存储在手机上.一般分为内部存储和SD卡存储. 一. 内部存储 ,以 FileOutputStream File file = new File(getFilesDir(),& ...
- Android 内部存储安装apk文件实现
目前国内市场的山寨机横行,安卓手机升级也是一天一个样,对于原来老手机可能没有SDCARD,导致我们的APP不能下载资源,无法更新APP,针对这种情况有以下解决方案.通过以下函数判断是否有SD卡再判断下 ...
- android 内部存储相关知识点: getfilestreampath getDir 子文件夹
文件系统的API的命名方式和常规的不一样: 都是get命名,但是功能就是能创建文件夹... 这种方式的API 命名习惯和常规的不一样... createXXX ----方便查找 http://i ...
- Android内部存储与外部存储的文件操作类
public class SDCardHelper { // 判断SD卡是否被挂载 public static boolean isSDCardMounted() { // return Enviro ...
随机推荐
- Python Ethical Hacking - VULNERABILITY SCANNER(2)
VULNERABILITY_SCANNER How to discover a vulnerability in a web application? 1. Go into every possibl ...
- Python3 装饰器解析
第6章 函数 6.1 函数的定义和调用 6.2 参数传递 6.3 函数返回值 6.4 变量作用域 6.5 匿名函数(lambda) 6.6 递归函数 6.7 迭代器 6.8 生成器 6.9 装饰器 6 ...
- python多线程之Threading
什么是线程? 线程是操作系统内核调度的基本单位,一个进程中包含一个或多个线程,同一个进程内的多个线程资源共享,线程相比进程是“轻”量级的任务,内核进行调度时效率更高. 多线程有什么优势? 多线程可以实 ...
- 循序渐进nginx(一):介绍、安装、hello world、Location匹配
目录 前言: Nginx是什么 使用场景: 官方文档说明 安装 windows下: linux(CentOS7)下: docker下: 目录结构 Hello World 1.展示一下默认的核心配置: ...
- 性能1.84倍于Ceph!网易数帆Curve分布式存储开源
在上周刚结束的网易数字+大会上 网易数帆宣布: 开源一款名为Curve的高性能分布式存储系统, 性能可达Ceph的1.84倍! 网易副总裁.网易杭州研究院执行院长兼网易数帆总经理汪源: 基础软件的能力 ...
- 解决android studio Gradle无法同步问题
打开根目录build.gradle buildscript { repositories { // 添加阿里云 maven 地址 maven { url 'http://maven.aliyun.co ...
- 新阿里云服务器从0开始配置为python开发环境
由于每次打开linux虚拟机比较麻烦,于是尝试一下云服务器,在阿里云领取了一个月的试用服务器,这里记录一下新服务器从0配置成python开发环境的步骤,以便以后配置新服务器时有个参考. 免费领取一个月 ...
- Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)
SSD写数据会出现什么问题 SSD读写的单位不是位,而是一个块.如果要改变这个块中的一位,首先要将整个块擦写成1,然后再写入更新的数据. 为了解决擦写块的低效,SSD的策略是将需要改写的块,读取出来, ...
- spring学习(七)spring整合JDBC
Spring中封装了一个可操作数据库的对象,该对象封装了JDBC技术 使用数据库 一.导包(IDEA的maven工程,在pom.xml文件中导入依赖,必须注意依赖,不然会报各种异常) <?xml ...
- 完全卸载MySQL完整图文流程
想把mlsql卸载了重装,看了许多文章试了很多方法都没办法完全卸载,直到看到了这篇文章, 可以完全卸载mysql,在这里谢谢博主,也拿出来分享给大家 原文链接:https://blog.csdn.ne ...