发表于: 2018-12-03 22:14:07

0 934


一、今天完成的事情

Android的文件存储路径

Android的存储路径涉及到内部存储、外部存储,而伴随着版本的更新,内部存储和外部存储的定义也有所不同。以前我一直以为手机自带的存储就是内部存储,通过卡槽插入的SD卡是外部存储,其实并没有这么简单。在Android4.4之前确实是这么分的,但是android4.4(包括4.4)之后,手机自带的存储会被划分为两个部分,一部分是内置存储,一部分是外置存储,而扩展的SD卡仍然是外置存储。

内部存储

内部存储位于系统中很特殊的一个位置,是系统本身和系统应用程序主要的数据存储所在地,除非获取root权限,否则是无法访问这部分空间的。如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文件也被删除。从技术上来讲如果你在创建内部存储文件的时候将文件属性设置成可读,其他app能够访问自己应用的数据,前提是他知道你这个应用的包名,如果一个文件的属性是私有(private),那么即使知道包名其他应用也无法访问。 由于内部存储空间有限,在开发中我们一般都是操作外部存储空间。

内部存储中的两个重要目录:

(1)app文件夹,没有root的手机不能打开该文件夹。app文件夹里存放着我们所有安装的app的apk文件夹,当我们调试一个app的时候,可以看到控制台输出的内容,有一项是uploading...,就是上传我们的apk到这个文件夹。

(2)data文件夹,这个文件夹里边都是一些包名,打开这些包名后我们会看到这样一些文件:

data/data/包名/shared_prefs

data/data/包名/database

data/data/包名/files

data/data/包名/cache

在使用SharePerference的时候,将数据持久化存储于本地,其实就是存在这个文件夹中的xml文件里,app里边的数据库文件就存储于databases文件夹中,还有其他普通数据存储在files中,缓存在cache文件夹中。


外部存储

Android4.4之前,手机自带的存储就是内部存储,通过卡槽扩展的SD卡就是外部存储;

Android4.4之后,手机自带的存储空间划分为两部分,一部分是内部存储,一部分是外部存储,通过卡槽扩展的SD卡仍是外部存储;

不同于内部存储,外部存储是可以访问的,用户通过文件浏览器可以查看、操作外部存储中的所有文件。

外部存储有两大目录,一类是私有目录,一类是公有目录。

私有目录位于Android/data/包名/目录下,通过文件浏览器就能查看到,

公有目录有九大类,分别是:ALARMS、DCIM、DOWNLOAD、MOVIES、MUSIC、NOTIFICATION、PICTURES、PODCASTS、RINGTONES,命名一目了然,Google官方建议我们数据应该存储在私有目录下,不建议存储在公有目录下或其他地方,这样当用户卸载掉App之后,相关的数据会一并删除,如果直接在/storage/sdcard目录也就是外部存储的根目录下创建了一个应用的文件夹,那么当删除应用的时候,这个文件夹就不会被删除。但是很多应用并没有遵循这个建议,这也导致很多人认为Android系统会在存储中产生很多“垃圾文件”。


获取存储路径的方法

1.内部存储--根目录

EnvironMent.getDataDirectory()

2.内部存储--应用的files文件夹的路径

getFileDir()

3.内部存储--应用的cache文件夹的路径

getCacheDirect()

4.内部存储--应用的自定义路径

getDir(“自定义路径”, MODE_PRIVATE)


5.外部存储--根目录

Enviroment .getExternalStorageDirectory()

6.外部存储--公有目录,其中PUBLIC_DIRECTORY就是上面提到的九大公有目录的名称。

Environment.getExternalStoragePublicDirectory(PUBLIC_DIRECITORY)

7.外部存储--应用的私有目录中的files文件夹

getExternal FilesDir()

8.外部存储--应用的私有目录的cache文件夹

getExternal CacheDir()


获取外部存储路径时需要注意,在4.4之前如果没有插入SD卡是没有外部存储的,如果调用相关方法会返回null,所有需要提前做一个判断。



二、明天的计划

提交任务九


三、遇到的问题    


四、收获

弄清了Android的文件存储路径





返回列表 返回列表
评论

    分享到