Android 文件夹管理

获取外部公有存储位置,在这下面建立的文件夹或文件,卸载APP不会被删除

  • Environment.getExternalStorageDirectory())

    输出:/storage/emulated/0

    对应目录:mnt/sdcard/

  • Environment.getExternalStoragePublicDirectory(Environment.DIRECOTRY_DOCUMENTS)

    输出:/storage/emulated/0/Documents

    对应目录:mnt/sdcard/Documents

  • Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)

    输出:/storage/emulated/0/DCIM

    对应目录:mnt/sdcard/DCIM

    说明:一般音视频文件就放在这个目录下面,手机自身拍照录像的文件也放在这个目录下。系统能自动扫描



下面是获取外部APP私有存储位置, 这个路径下文件都会在APP卸载时被清空

  • context.getExternalFilesDir(null)
    输出:/storage/emulated/0/Android/data/com.fe.myapplication/files
    对应目录:mnt/sdcard/Android/data/com.fe.myapplication/files

  • context.getExternalFilesDir(Environment.DIRECTORY_DCIM)
    输出:/storage/emulated/0/Android/data/com.fe.myapplication/files/DCIM
    对应目录:mnt/sdcard/Android/data/com.fe.myapplication/files/DCIM

    最后一个目录是由系统自动生成。files 文件夹下文件在卸载APP时会被清空

    Environment.DIRECTORY_DCIM --> DCIM

    Environment.DIRECTORY_DOCUMENTS --> Documents

    Environment.DIRECTORY_DOWNLOADS --> Download

  • context.getExternalCacheDir()
    输出:/storage/emulated/0/Android/data/com.fe.myapplication/cache
    对应目录:mnt/sdcard/Android/data/com.fe.application/cache

20210623更新

注:阅读公司项目代码,发现同事为在APP外部私有存储位置建立文件夹,直接调用

context.getExternalFilesDir(文件夹名)

前文中我以为函数参数只能是枚举常量 Environment.***, 疑惑这样操作能否生成想要的文件,尝试发现生成成功 mnt/sdcard/Android/data/com.fe.application/files/文件夹名
因此,获取APP外部私有存储位置精确表述为:
context.getExternalFilesDir(null) 可得路径 mnt/sdcard/Android/data/com.fe.application/files, 而其中的String类型参数不为空时,系统将自动在 files 文件夹下建立名称为所提供参数的文件夹.
又因为私有存储位置不需要读写权限,所以可在 files 文件夹下建立任意文件。



下面是获取内部APP私有存储位置,这个路径下文件都会在APP卸载时被清空

APP创建时,会自动在 data/data/com.joyhonest.myapplication/ 下面创建 cache, code_cache, files 三个文件夹.

  • context.getCacheDir()
    输出:/data/user/0/com.joyhonest.myapplication/cache
    对应目录:data/data/com.fe.myapplication/cache

  • context.getFilesDir()
    输出:/data/user/0/com.joyhonest.myapplication/files
    对应目录:data/data/com.fe.myapplication/files

//注意:全文中的外部存储并不一定是可移除的存储,现有手机都有容量非常大的不可移除的外部存储

//放置永久性文件时,放置在外部公有存储位置
//放置缓存文件时,优先放置在外部APP私有存储位置,外部不可用时再放到内部APP私有存储位置

//转载自:http://blog.csdn.net/a910626/article/details/51470866
public String getDiskCacheDir(Context context) {
    
      
    String cachePath = null;  
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())  
            || !Environment.isExternalStorageRemovable()) {
    
      
        cachePath = context.getExternalCacheDir().getPath();  
    } else {
    
      
        cachePath = context.getCacheDir().getPath();  
    }  
    return cachePath;  
}  

修改记录

1 20210623 更新外部APP私有存储位置处文件夹生成

猜你喜欢

转载自blog.csdn.net/dpdcsdn/article/details/106851422