Android本地存储路径

1. 手机应用内置存储路径

  • getFilesDir().getAbsolutePath()
  • getFilesDir().getPath()
  • getCacheDir().getAbsolutePath()
  • getCacheDir().getPath()

实验代码:

String savePath5 = getFilesDir().getAbsolutePath();
String savePath6 = getFilesDir().getPath();

String savePath7 = getCacheDir().getAbsolutePath();
String savePath8 = getCacheDir().getPath();


Log.d(TAG,"save path5 --------->"+savePath5);
Log.d(TAG,"save path6 --------->"+savePath6);

Log.d(TAG,"save path7 --------->"+savePath7);
Log.d(TAG,"save path8 --------->"+savePath8);

打印结果:

tag:save path5 --------->/data/user/0/fxjzzyo.com.ffmpegtest/files
tag:save path6 --------->/data/user/0/fxjzzyo.com.ffmpegtest/files

tag: save path7 --------->/data/user/0/fxjzzyo.com.ffmpegtest/cache
tag: save path8 --------->/data/user/0/fxjzzyo.com.ffmpegtest/cache

结论:

  • getFilesDir()返回的是/data/user/0/包名/files这个文件夹,与应用的存在有关,当应用卸载时,里面的内容也同时被删除。
  • 同理,getCacheDir()返回的是/data/user/0/包名/cache这个文件夹,与应用的存在有关,当应用卸载时,里面的内容也同时被删除。
  • 另外,我这里的实验结果getAbsolutePath()和getPath()返回的路径是一样的,所以使用时不必纠结,我打算以后就用绝对路径getAbsolutePath()好了。

2. 手机外置sd卡存储路径

有两种获取方式,一种是获取到sd卡根目录,另一种是获取到应用相关的sd卡目录。

2.1 获取sd卡根目录路径

  • Environment.getExternalStorageDirectory().getAbsolutePath()

实验代码:

String savePath9 = Environment.getExternalStorageDirectory().getAbsolutePath();
String savePath10 = Environment.getExternalStorageDirectory().getPath();

Log.d(TAG,"save path9 --------->"+savePath9);
Log.d(TAG,"save path10 --------->"+savePath10);

打印结果:

tag: save path9 --------->/storage/emulated/0
tag: save path10 --------->/storage/emulated/0

结论:

  • Environment.getExternalStorageDirectory()获取的是sd卡的根目录文件夹,与应用无关,即使卸载了应用,里面的内容依然存在。

2.2 获取到应用相关的sd卡目录路径

  • getExternalFilesDir(null).getAbsolutePath()

实验代码:

String savePath = getExternalFilesDir(null).getAbsolutePath();
String savePath2 = getExternalFilesDir(null).getPath();
String savePath3 = getExternalCacheDir().getAbsolutePath();
String savePath4 = getExternalCacheDir().getPath();

Log.d(TAG,"save path --------->"+savePath);
Log.d(TAG,"save path2 --------->"+savePath2);
Log.d(TAG,"save path3 --------->"+savePath3);
Log.d(TAG,"save path4 --------->"+savePath4);

打印结果:

tag: save path --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/files
tag: save path2 --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/files
tag: save path3 --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/cache
tag: save path4 --------->/storage/emulated/0/Android/data/fxjzzyo.com.ffmpegtest/cache

结论:

  • getExternalFilesDir(null)获取的是/storage/emulated/0/Android/data/包名/files这个文件夹,与应用有关,卸载了应用,里面的内容也没了。
  • 同理,getExternalCacheDir()获取的是/storage/emulated/0/Android/data/包名/cache这个文件夹,与应用有关,卸载了应用,里面的内容也没了。

参考文章:
https://blog.csdn.net/xiao_sier/article/details/78667149

猜你喜欢

转载自blog.csdn.net/fxjzzyo/article/details/84787968
今日推荐