安卓中常用的数据存储方式之普通文件存取
2016-09-17 23:16
239 查看
安卓中常用的数据存储按文件的类型可以分为四大部分:
1.普通的文本文件,图片信息等:
保存在data/data/包名/files 目录下
2.配置文件,用于保存用户的个性化设置
保存在data/data/包名/shared_prefs 下
3.数据库文件。保存具有结构化的文件;
保存在data/data/包名/databases 下
4.缓存文件 一些临时性文件
保存在data/data/包名/cache 下
普通文件的保存:
可以先通过上下文获取文件的输入流 获取到的输入流带有文件的路径 然后直接往文件中写数据
<span style="font-size:18px;">//获取当前应用所在包名</span>
文件的权限大致有如下几种:
MODE_PRIVATE 私有权限只许程序本身访问
MODE_APPEND 私有权限 但是写数据的时候是可以追加的
MODE_WORLD_WRITR 最大权限 任何应用可读 已经过时
MODE_WORLD_READ 最大权限 任何应用可写 已经过时
扩展:安卓系统本身有管理自己文件权限的机制。在.apk文件安装的时候 系统会分配给每个应用不用的userid,当应用想访问其文件时
需要userid匹配才能得到数据
向SD卡中保存数据 :
一般说手机的内存是很小的,所以都会用到外部的存储,SD卡存储的数据是不安全的
一般用来保存音乐,视屏等大容量的文件。
注:我们可以在外部文件目录放置一个空的文件,命名为.nomedia这就会阻止安卓的媒体扫描器读取我们的媒体文件
如果想对SD卡中的文件进行读取操作的话,那就需要获取Environment 对象 ,当然想读取你的SD卡文件首先也是要获取权限的
在此列举一下Environment中的方法:
1.普通的文本文件,图片信息等:
保存在data/data/包名/files 目录下
2.配置文件,用于保存用户的个性化设置
保存在data/data/包名/shared_prefs 下
3.数据库文件。保存具有结构化的文件;
保存在data/data/包名/databases 下
4.缓存文件 一些临时性文件
保存在data/data/包名/cache 下
普通文件的保存:
可以先通过上下文获取文件的输入流 获取到的输入流带有文件的路径 然后直接往文件中写数据
<span style="font-size:18px;">//获取当前应用所在包名</span>
<span style="font-size:18px;">context.getFilesDir().toString() </span>
<span style="font-size:18px;">//直接获取流对象 FileOutputStream fs = context.openFileOutput("info3.txt", context.MODE_PRIVATE);</span>这里获取流对象的最后一个参数是文件的权限
文件的权限大致有如下几种:
MODE_PRIVATE 私有权限只许程序本身访问
MODE_APPEND 私有权限 但是写数据的时候是可以追加的
MODE_WORLD_WRITR 最大权限 任何应用可读 已经过时
MODE_WORLD_READ 最大权限 任何应用可写 已经过时
扩展:安卓系统本身有管理自己文件权限的机制。在.apk文件安装的时候 系统会分配给每个应用不用的userid,当应用想访问其文件时
需要userid匹配才能得到数据
向SD卡中保存数据 :
一般说手机的内存是很小的,所以都会用到外部的存储,SD卡存储的数据是不安全的
一般用来保存音乐,视屏等大容量的文件。
注:我们可以在外部文件目录放置一个空的文件,命名为.nomedia这就会阻止安卓的媒体扫描器读取我们的媒体文件
如果想对SD卡中的文件进行读取操作的话,那就需要获取Environment 对象 ,当然想读取你的SD卡文件首先也是要获取权限的
在此列举一下Environment中的方法:
<span style="font-size:18px;">// 获取当前系统,外部存储器的根目录。 public static File getExternalStorageDirectory() // 获取当前系统,data目录。 public static File getDataDirectory() // 获取当前系统,system目录。 public static File getRootDirectory() // 获取当前系统存储卡的状态。在Environment类中定义了如下几个String类型的状态: // - MEDIA_MOUNTED :已经安装到手机中,并可以对其进行读写操作。 // - MEDIA_MOUNTED_READ_ONLY :已经安装到手机中,只可以对其进行读操作。 // - MEDIA_UNMOUNTABLE :存储卡在手机中,但是没有装载到操作系统上。 // - MEDIA_REMOVED :存储卡不在手机中。 public static String getExternalStorageState()</span>
<span style="font-size:18px;">File file = Environment.getExternalStorageDirectory(); long space = file.getTotalSpace(); //获取总空间大小 单位byte long freeSpace = file.getFreeSpace(); //获取剩余空间</span>知道上面的一些方法,就可以通过输入输出流对SD卡中的文件进行读取操作,在此我就不再写示例代码了
相关文章推荐
- 安卓中常用的数据存储方式之配置文件存取
- 安卓常用数据存储方式之数据库存储
- 安卓存储数据和文件系列3:SQLite数据库方式
- 熟悉常用数据存储方式(文件存储和数据库存储)
- 安卓存储数据和文件系列4:内容提供者(Content Provider)方式
- Android学习 —— 数据的存储与访问方式一: 文件存取
- Android学习 —— 数据的存储与访问方式一: 文件存取
- Android上常用的几种本地数据存储方式:2、文件存储数据
- 安卓存储数据和文件系列1:读写sdCard方式
- 安卓存储数据和文件系列2:共享参数(sharedpreferences)方式
- 【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- 游戏数据存储的四种常用方式
- Android中的文件存储数据方式 .
- 【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- 【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- 【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- 游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- FAT12文件系统之数据存储方式详解
- 【iOS-Cocos2d游戏开发之十九】游戏数据存储的四种常用方式NSKeyedArchiver/NSUserDefaults/Write写入/SQLite3
- 13—(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中