Created
September 2, 2014 03:05
-
-
Save SeniorZhai/c617da08c01fd3b64b3a to your computer and use it in GitHub Desktop.
Cache工具类
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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