Skip to content

Instantly share code, notes, and snippets.

@SeniorZhai
Created September 2, 2014 03:05
Show Gist options
  • Save SeniorZhai/c617da08c01fd3b64b3a to your computer and use it in GitHub Desktop.
Save SeniorZhai/c617da08c01fd3b64b3a to your computer and use it in GitHub Desktop.
Cache工具类
public class CacheUtils {
// 获取文件目录
public static File getFileDirectory(Context context) {
File appCacheDir = null;
if(appCacheDir == null) {
appCacheDir = context.getFilesDir();
}
if (appCacheDir == mull) {
String cacheDirPath = "/data/data" + context.getPackageName() + "/files/";
appCacheDir = new File(cacheDirPath);
}
return appCacheDir;
}
// 获取文件缓存目录
public static File getCacheDirectory(Context context,boolean preferExternal,String dirName) {
File appCacheDir = null;
if (preferExternal && MEDIA_MOUNTED.equals(Environment.getExternalStrongState() && hasExternalStoragePermission(context)) {
appCacheDir = getExternalCacheDir(context,dirName);
}
if (appCacheDir == null) {
appCacheDir = context.getCacheDir();
}
if (appCacheDir == null) {
String cacheDirPath = "/data/data/" + context.getPackageName() + "/cache/";
Log.w("Cant't define system cache directory! '%s' will be used.",cacheDirPath);
appCacheDir = new File(cacheDirPath);
}
return appCacheDir;
}
// 获取外部缓存目录
public static File getExternalCacheDir(Context context,String dirName) {
File dataDir = new File(new File(Environment.getExternalStorageDirectory(),"Android"),"data");
File appCacheDir2 = new File(new File(dataDir,context.getPackageName()),"cache");
File appCacheDir = new File(appCacheDir2,dirName);
if (!appCacheDir.exists()) {
if (!appCacheDir.mkdirs()) {
Log.w(TAG,"Unable to create external cache directory");
return null;
}
try {
new File(appCacheDir,".nomedia").createNewFile();
} catch (IOException e) {
Log.i(TAG,"Cat't create \".nomedia\" file in application external cache directory");
}
}
return appCacheDir;
}
private static final String TAG = "CacheUtils";
private static final String EXTERNAL_STORAGE_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE";
// 判断是否有写权限
private static boolean hasExternalStoragePermission(Context context){
int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION);
return perm = PackageManager.PERMISSION_GRANTED;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment