关于文件的一些问题
1、File.mkdir()和File.mkdirs()的差别
"File.mkdirs()方法创建目录,该方法允许一次性创建多级目录,例如new File(“c:\\1\\2”).mkdirs();同时创建目录1和目录2.如果目录1存在将不被重新创建。File.mkdir()与mkdirs()不同在于mkdir()只能创建一级目录。而mkdirs()在需要时会自动创建上级目录。"
2、file.exists() 文件目录是否存在
3、内部外部对比如下↓
external storage 外部存储
Environment.getExternalStorageDirectory() SD根目录:/mnt/sdcard/ (6.0后写入需要用户授权)
context.getExternalFilesDir(dir) 路径为:/mnt/sdcard/Android/data/< package name >/files/…
context.getExternalCacheDir() 路径为:/mnt/sdcard//Android/data/< package name >/cach/…
internal storage 内部存储
context.getFilesDir() 路径是:/data/data/< package name >/files/…
context.getCacheDir() 路径是:/data/data/< package name >/cach/…
4、正常开发获取存储文件路径的方法
/**
* @param context 上下文对象
* @param dir 存储目录
*/
public static String getFilePath(Context context,String dir) {
String directoryPath="";
//判断SD卡是否可用
if (MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ) {
directoryPath =context.getExternalFilesDir(dir).getAbsolutePath() ;
}else{
//没内存卡就存机身内存
directoryPath=context.getFilesDir()+File.separator+dir;
}
File file = new File(directoryPath);
if(!file.exists()){ //判断文件目录是否存在
file.mkdirs();
}
return directoryPath;
}
网友评论