您的位置:首页 > 其它

安卓中常用的数据存储方式之普通文件存取

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>
<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卡中的文件进行读取操作,在此我就不再写示例代码了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐