湖上湖
由Gaunt Face发布的上面编辑的代码片段包含一个错误,如果目录无法删除,因为其中一个文件无法删除,代码将继续在无限循环中重试。我把它改写成真正的递归,并添加了一个numDays参数,这样你就可以控制修剪文件的年龄://helper method for clearCache() , recursive//returns number of deleted filesstatic int clearCacheFolder(final File dir, final int numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
//first delete subdirectories recursively
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
//then delete the files and subdirectories in this dir
//only empty directories can be deleted, so subdirs have been done first
if (child.lastModified()
if (child.delete()) {
deletedFiles++;
}
}
}
}
catch(Exception e) {
Log.e(TAG, String.format("Failed to clean the cache, error %s", e.getMessage()));
}
}
return deletedFiles;}/*
* Delete the files older than numDays days from the application cache
* 0 means all files.
*/public static void clearCache(final Context context, final int numDays) {
Log.i(TAG, String.format("Starting cache prune, deleting files older than %d days", numDays));
int numDeletedFiles = clearCacheFolder(context.getCacheDir(), numDays);
Log.i(TAG, String.format("Cache pruning completed, %d files deleted", numDeletedFiles));}希望对其他人有用:)