弄清楚Android存储路径

在平时开发当中,我们可能会纠结什么文件该存储在哪个目录下面,要么是不确定放哪,要么是放多了以后放乱了。那就弄清楚哪些文件存哪里吧。

Android存储路径目录

1.外部存储

外部存储目录在/storage/emulated/0/下:


外部存储根目录/storage/emulated/0/获取方式:

Environment.getExternalStorageDirectory()
外部存储子目录分为分为三部分:

第一部分:共享存储空间
也就是所有App共享的部分,比如相册、音乐、铃声、文档等。
1.媒体文件

2.文档和其它文件


第二部分:App外部私有目录

第三部分:其它目录
各个App在/sdcard/目录下创建的目录,用于各自存储文件。

读写共享存储空间方法

private void getImagePath(Context context) {
        ContentResolver contentResolver = context.getContentResolver();
        Cursor cursor = contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
        while(cursor.moveToNext()) {
            String imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA));
        }
    }

读写App外部私有目录方法

  • 目录为 /storage/emulated/0/Android/data/packagename/cache
    (packagename为应用包名)
File cacheDir = context.getExternalCacheDir();
  • 目录为 /storage/emulated/0/Android/data/packagename/files
File fileDir = context.getExternalFilesDir(null);

App卸载的时候,两者都会被清除。

2.内部存储(手机内部存储)

应用内部存储在目录data/data/packagename下,具体查看目录如下:


大致介绍一下以上目录作用:


部分目录获取方式:
  • 目录为 /data
getDataDir()
  • 应用缓存目录 /data/data/packagename/cache
getCacheDir()
  • 应用文件目录 /data/data/packagename/files
getFilesDir()

总结:
getCacheDir和getFilesDir目录必须是root的手机在文件操作系统中才能看到。如果在应用程序中清空数据或者卸载应用,那这两个目录下的文件也将会被清空。

getExternalCacheDir()与getExternalFilesDir(null)直接在文件系统下Android/data/packagename能看到。如果应用卸载,该目录下的文件会被删除掉。

Environment.getExternalStorageDirectory()根目录下创建的文件不会因程序卸载被清除掉。

内部存储与外部存储里的App私有目录区别

1.属于App专属,App自身访问两者无需任何权限。
2.App卸载后,两者皆被删除。
3.两者目录下增加的文件最终会被统计到"设置->存储和缓存"里。

参考:https://mp.weixin.qq.com/s/uxvTt3eNZM2vGb6jMQrRsA

你可能感兴趣的:(弄清楚Android存储路径)