Android实际开发如何存储?

注意:本篇文章是本人阅读相关文章所写下的总结,方便以后查阅,所有内容非原创,侵权删。

文章来自:
Android文件存储路径getFilesDir()与getExternalFilesDir的区别

目录

1.文件缓存到哪里?(会随着应用的删除而删除)
2.文件缓存到哪里?(不会随着应用的删除而删除)

1.文件缓存到哪里?(会随着应用的删除而删除)

当需要缓存文件时,不要直接缓存到SD卡(/mnt/sdcard/ )下
即通过File sdCard = Environment.getExternalStorageDirectory(); 获取SD卡根目录,然后自定义文件/文件名进行文件存储。
原因:
1.当手机安装了大量app的时候,SD卡会迅速变得杂乱不堪。
2.API6.0之后,根目录文件存储需要用户授权,即使在清单文件配置了存储权限,用户不授权也是写不进去的。

应该这样缓存:
1.当手机有SD卡或自身分配了外部存储空间时
存在SD卡/mnt/sdcard/的子目录下

//缓存在外部存储中的
/Android/data/< package name >/files/… (该路径通常挂载在/mnt/sdcard/下)

//外部存储路径调用方法是:
//这个方法获得的文件存储路径适用于6.0以后系统,主要AndroidManifest.xml配置读写权限了,就不需要用户再授权了.
context.getExternalFilesDir(dir).getAbsolutePath() //通过context调用,参数dir为自自定义文件夹.

2.如果有些手机没有SD卡或者系统自身没有分配外部存储空间
则用内部存储

//内部存储的路径是: 
/data/data/< package name>/files/…(该路径挂载在在手机自身存储目录)

//内部存储路径调用方法是:
context().getFilesDir().getAbsolutePath() //通过context调用

实际开发具体代码实现:

    private String getFilePath(Context context,String dir) {
        String dirFilePath = "";
        if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
            //SD卡有用 
            dirFilePath = context.getExternalFilesDir(dir).getAbsolutePath();
        }else{
            //SD卡没有用
            dirFilePath = context.getFilesDir()+ File.separator+dir;
        }
        
        File file = new File(dirFilePath);
        if(!file.exists()){
            file.mkdirs();
        }
        return dirFilePath;
    }

2.文件缓存到哪里?(不会随着应用的删除而删除)

则存在SD卡上自定义文件/目录
即通过File sdCard = Environment.getExternalStorageDirectory(); 获取SD卡根目录,然后自定义文件/文件名进行文件存储。

你可能感兴趣的:(Android实际开发如何存储?)