外部存储和内部存储介绍
android手机的存储空间可以分为外部存储和内部存储,内部存储里面的空间比较小,里面的数据是由系统维护的。比如我们开发时候创建的数据库或者SP文件都是存储在内部存储里面。如果要查看内部存储手机需要root权限才能看到,一般时候是看不到的。
内部存储
比如我的nexus手机上的内部存储目录是
/data/user/0/com.jin.mak.myapplication
这个路径通过文件管理器没root情况下是看不到的。
这里是通过开发工具查看也需要root
data下面的data目录就是存储所有应用的sp 文件 database文件 缓存文件的地方
1.data/data/包名/shared_prefs sp文件
2.data/data/包名/databases 数据库文件
3.data/data/包名/files file文件
4.data/data/包名/cache 缓存文件
官方建议就是不要把一些特大文件存储在内部存储里面,需要注意内部存储里面的文件会随着应用的删除而删除,我们可以把一些文件比较大的文件存放在外部存储自己应用的包名下,这样卸载应用的时候这些文件也会随着一起卸载
外部存储
Google官方建议我们App的数据应该存储在外部存储的私有目录中该App的包名下,这样当用户卸载掉App之后,相关的数据会一并删除,如果你直接在/storage/sdcard目录下创建了一个应用的文件夹,那么当你删除应用的时候,这个文件夹就不会被删除
外部存储才是我们平时操作最多的,外部存储一般就是我们上面看到的storage文件夹,当然也有可能是mnt文件夹,这个不同厂家有可能不一样。
一般来说,在storage文件夹中有一个sdcard文件夹,这个文件夹中的文件又分为两类,一类是公有目录,还有一类是私有目录,其中的公有目录有九大类,比如DCIM、DOWNLOAD等这种系统为我们创建的文件夹,私有目录就是android这个文件夹,这个文件夹打开之后里边有一个data文件夹,打开这个data文件夹,里边有许多包名组成的文件夹
log : /storage/emulated/0/Android/data/com.jin.mak.myapplication/files/tesa
在外部存储包名下面的files文件下创建了tesa文件夹
getApplicationContext().getExternalFilesDir("tesa")