防止经常要用的时候记不住在哪个文件夹,要再去一一百度很麻烦,一次性测完了整理放在这里。
注:测试时的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());}}
}