不说废话,直接上代码,一下是我写的一个汇集获取Android下几种不同目录的一个工具类。
`
/**
* 注意Android四种存储目录的区别
*
*/
public class FileHelper {
private static String path="";
/**
* 获取应该内部存储目录 对应文件目录\data\date\application包名\files
* 该目录属于应用程序的私有目录 其他应用程序时无法访问的 无需申请权限
*/
public static String getFilePath(Context context){
File file=context.getFilesDir();
path=file.getAbsolutePath();
return path;
}
/**
* 获取应用程序内部存储目录 对应文件目录\data\data\application包名\cache
* 该目录属于应用程序的私有目录 无需权限
*
*/
public static String getCachePath(Context context){
File cacheFile=context.getCacheDir();
path=cacheFile.getAbsolutePath();
return path;
}
/**
* 获取sd卡外部存储文件目录 该目录下的文件数据是属于外部存储卡存储当前应用的文件目录 该目录需要申请权限
* 对应的目录 /sdCarg/Androida/data/applicaion包名/files
* 对于大部分手机现在智能机 外部存储sdCard都是内嵌在手机中不可插拔 所以对于这类手机来说 应用一断被卸载 对应sdCard中该目录的文件将全部被清除
* 对于外部存储是物理存储 外部插拔式sdCard来说 应用被卸载数据任然不会被删除
* @param context
* @return
*/
public static String getExtralFilePath(Context context){
File extralFile=context.getExternalFilesDir(null);
path=extralFile.getAbsolutePath();
return path;
}
/***
* 获取sd卡外部存储文件目录
* 该目录下的文件数据是属于外部存储卡存储当前应用的文件目录 该目录需要申请权限
* 对应的目录 /sdCarg/Androida/data/applicaion包名/files
* 对于大部分手机现在智能机 外部存储sdCard都是内嵌在手机中不可插拔 所以对于这类手机来说 应用一断被卸载 对应sdCard中该目录的文件将全部被清除
* 对于外部存储是物理存储 外部插拔式sdCard来说 应用被卸载数据任然不会被删除
*/
public static String getExtralCachePath(Context context){
File externalCacheDir=context.getExternalCacheDir();
path=externalCacheDir.getAbsolutePath();
return path;
}
/**
* 通用方法用于保存应用文件数据
*/
public static String getCommenFilePath(Context context){
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())||!Environment.isExternalStorageRemovable()){
path=getExtralFilePath(context);
}else {
path=getFilePath(context);
}
return path;
}
/**
* 通用方法用于保存应用缓存数据
*/
public static String getCommenCachePath(Context context){
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())||!Environment.isExternalStorageRemovable()){
path=getExtralCachePath(context);
}else {
path=getCachePath(context);
}
return path;
}
/**
* 获取sd卡根目录方法
*/
public static String getSDCardPath(){
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())||!Environment.isExternalStorageRemovable()){
File file=Environment.getExternalStorageDirectory();
path=file.getAbsolutePath();
}else {
path="";
}
return path;
}
}
`
接下来就是征对几种目录打印日志:
String cachePath=FileHelper.getCachePath(this);
String filePath=FileHelper.getFilePath(this);
String extralFilePath=FileHelper.getExtralFilePath(this);
String extralCachePath=FileHelper.getExtralCachePath(this);
String sdCardPath=FileHelper.getSDCardPath();
Log.v("log1","cachePath:"+cachePath);
Log.v("log1","filePath:"+filePath);
Log.v("log1","extralFilePath:"+extralFilePath);
Log.v("log1","extralCachePath:"+extralCachePath);
Log.v("log1","sdCardPath:"+sdCardPath);
以下是对应日志输出结果:
如果上图看不清楚可以直接看下面的文本结果:
log1:cachePath:/data/data/com.example.administrator.myjavadeamo/cache
log1:filePath:/data/data/com.example.administrator.myjavadeamo/files
log1:extralFilePath:/storage/emulated/0/Android/data/com.example.administrator.myjavadeamo/files
log1:extralCachePath:/storage/emulated/0/Android/data/com.example.administrator.myjavadeamo/cache
log1:sdCardPath:/storage/emulated/0