Używam tej funkcji rekurencyjnej do wykonania zadania:
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();
}
}
Funkcja sprawdza, czy jest to katalog, czy plik.
Jeśli jest to katalog, sprawdza, czy ma pliki potomne, czy ma pliki potomne, zadzwoni ponownie, przekazując dzieci i powtarzając.
Jeśli jest to plik, usuń go.
(Nie używaj tej funkcji, aby wyczyścić pamięć podręczną aplikacji, przekazując katalog pamięci podręcznej, ponieważ spowoduje to również usunięcie katalogu pamięci podręcznej, więc aplikacja się zawiesi ... Jeśli chcesz wyczyścić pamięć podręczną, użyj tej funkcji, która nie usunie zdajesz sobie z tego sprawę:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
lub możesz sprawdzić, czy jest to katalog pamięci podręcznej, używając:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Przykładowy kod do wyczyszczenia pamięci podręcznej aplikacji:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
Cześć, miłego dnia i kodowania: D