Android文件存储常用Api和对应存储位置

防止经常要用的时候记不住在哪个文件夹,要再去一一百度很麻烦,一次性测完了整理放在这里。

注:测试时的Android版本是12,如果实际地址不同可以用下面的测试代码自行重新看一遍。

Api 对应文件夹目录 说明
应用安装位置 data/data/包名 只有debug的包才能点进去看内部文件
getExternalFilesDir() /storage/emulated/0/Android/data/包名/files 一般来说都用这个,后面再加上文件夹将你自己要存的文件分类
getExternalFilesDirs() /storage/emulated/0/Android/data/包名/files 上面那个方法的复数版本,会返回所有符合要求的地址,demo里面两者返回相同
getExternalFilesDir(Environment.DIRECTORY_MUSIC) /storage/emulated/0/Android/data/包名/files/music 同上,入参还有很多能填的,具体看Environment类的对应常量
getExternalCacheDirs() /storage/emulated/0/Android/data/包名/cache
getDataDir() /data/user/0/包名
getFilesDir() /data/user/0/包名/files

代码(请随便整个测试按钮然后调用入口方法):

public class ContextFileUtils {

    private static final String TAG = "FileUtils";

    public static void printContextFile(Context context) {
        if (context == null) {
            Log.e(TAG, "printContextFile: null Context!!!");
            return;
        }

        printFilesPath(context.getExternalFilesDirs(null), "getExternalFilesDirs");
        printFilePath(context.getExternalFilesDir(null), "getExternalFilesDir");
        printFilesPath(context.getExternalFilesDirs(Environment.DIRECTORY_MUSIC), "getExternalFilesDirs, DIRECTORY_MUSIC");
        printFilesPath(context.getExternalFilesDirs(Environment.DIRECTORY_PICTURES), "getExternalFilesDirs, DIRECTORY_PICTURES");
        printFilesPath(context.getExternalCacheDirs(), "getExternalCacheDirs");
        printFilePath(context.getExternalCacheDir(), "getExternalCacheDir");

        printFilePath(context.getDataDir(), "getDataDir");
        printFilePath(context.getFilesDir(), "getFilesDir");
    }

    private static void printFilesPath(File[] files, String msg) {
        if (files == null) {
            return;
        }
        for (File file : files) {
            printFilePath(file, msg);
        }
    }

    private static void printFilePath(File file, String msg) {
        if (file != null) {
            Log.i(TAG, msg + ": " + file.getAbsolutePath());
        }
    }
}

你可能感兴趣的:(android)