您的位置:首页 > 移动开发 > Android开发

Android 学习笔记 第五季 10 文件系统

2014-11-25 17:11 204 查看
这篇来介绍和 File 有关的东西。

凡是从网络下载来的东西都可以以文件的形式保存,

所以了解 Android 的文件系统也是很重要的。

外部存储和内部存储

任何一台智能手机都将存储空间分为两部分,外部存储和内部存储。
对于有 SD 卡的手机来说,可移除的 SD 卡就是它的外部存储,剩余的是内部。
尽管越来越多的手机不再配有 SD 卡,但存储空间依旧分为了两部分。

内部存储是永远是 avaiable 的,而外部则不一定。
所以,需要检测下外部存储是否可用,再拟定存储策略。

APP 被安装在哪?

/data/data/com.example.myapp/files
/data/data/com.example.myapp/cache


APP 默认情况下是安装在内部存储中的,路径如上所示。
com.example.myapp/ 目录下的文件,默认情况下只有该 APP 才有访问的权限。
而且该目录下的文件会在卸载 APP 时被清除。

可以看到有两个目录,普通文件目录和缓存文件目录。
区别是缓存目录下的文件可能随时被系统删除。

外部存储

public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}


这个函数用于判断外部存储是否可读写。

外部存储分为两类文件,共有和私有文件。
先看下私有文件。
Log.e("result2", getExternalFilesDir(null).toString());
 Log.e("result2", getExternalCacheDir().toString());
/storage/emulated/0/Android/data/com.example.myapp/files
/storage/emulated/0/Android/data/com.example.myapp/cache


和内部存储的相同点:
1. 同样是分成了两个目录。
2. 卸载时会清除这些文件。

不同点:
1. 没有访问权限限制。
2. 普通文件有了种类的区分,像是音乐或图片。
这样一来,系统能更好地根据类型来处理这些文件。

Log.e("result2", getExternalFilesDir(Environment.DIRECTORY_MUSIC).toString());
 Log.e("result2", getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString());
/storage/emulated/0/Android/data/com.example.myapp/files/Music
/storage/emulated/0/Android/data/com.example.myapp/files/Photo


公有文件也是类似的,但不会再卸载时被清除。
Log.e("result2", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).toString());
 Log.e("result2", Environment.getExternalStorageDirectory().toString());
/storage/emulated/0/Music
/storage/emulated/0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: