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

来源:互联网 发布:数据透视表 总计 编辑:程序博客网 时间:2024/06/09 16:44

这篇来介绍和 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










0 0
原创粉丝点击