Я використовую цю рекурсивну функцію, щоб виконувати роботу:
public static void deleteDirAndContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
} else {
mFile.delete();
}
}
Функція перевіряє, чи це каталог чи файл.
Якщо це каталог перевіряє, чи є у нього дочірні файли, якщо у нього є дочірні файли, вона знову зателефонує, передаючи дітям і повторюючи.
Якщо це файл, видаліть його.
(Не використовуйте цю функцію, щоб очистити кеш програми, передавши кеш-каталог, оскільки він також видалить кер-каталог, щоб програма вийшла з ладу ... Якщо ви хочете очистити кеш, використовуйте цю функцію, яка не видалить реж, ви переходите до нього:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
або ви можете перевірити, чи це кеш-редактор, використовуючи:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Приклад коду, щоб очистити кеш програми:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
До побачення, приємного дня та кодування: D