版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyantan/article/details/77921827
话不多少,一个工具类,直接上代码:
public class FileUtils {
private static final String JPEG_FILE_SUFFIX = ".jpg";
private static final String WRITE_EXTERNAL_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE";
public static File createTmpFile(Context context) throws IOException {
String date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(new Date());
String JPEG_FILE_PREFIX = "IMG_" + date+"_";
File dir;
if (TextUtils.equals(getExternalStorageState(), MEDIA_MOUNTED)) {
dir = Environment.getExternalStoragePublicDirectory(DIRECTORY_DCIM + "/Camera");
if (!dir.exists()) {
dir = getCacheDirectory(context, true);
}
} else {
dir = getCacheDirectory(context, true);
}
return File.createTempFile(JPEG_FILE_PREFIX, JPEG_FILE_SUFFIX, dir);
}
private static File getCacheDirectory(Context context, boolean preferExternal) {
File appCacheDir = null;
String externalStorageState;
try {
externalStorageState = Environment.getExternalStorageState();
} catch (NullPointerException e) {
externalStorageState = "";
} catch (IncompatibleClassChangeError e) {
externalStorageState = "";
}
if (preferExternal && TextUtils.equals(externalStorageState, MEDIA_MOUNTED) && hasExternalStoragePermission(context)) {
appCacheDir = getExternalCacheDir(context);
}
if (appCacheDir == null) {
appCacheDir = context.getCacheDir();
}
if (appCacheDir == null) {
String cacheDirPath = context.getFilesDir().getPath() + context.getPackageName() + "/cache/";
appCacheDir = new File(cacheDirPath);
}
return appCacheDir;
}
private static File getExternalCacheDir(Context context) {
File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");
File appCacheDir = new File(new File(dataDir, context.getPackageName()), "cache");
if (!appCacheDir.exists()) {
if (!appCacheDir.mkdirs()) {
return null;
}
try {
new File(appCacheDir, ".nomedia").createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return appCacheDir;
}
private static boolean hasExternalStoragePermission(Context context) {
return PERMISSION_GRANTED == context.checkCallingOrSelfPermission(WRITE_EXTERNAL_PERMISSION);
}
}