J'utilise cette fonction récursive pour faire le travail:
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();
}
}
La fonction vérifie s'il s'agit d'un répertoire ou d'un fichier.
Si c'est un répertoire vérifie s'il a des fichiers enfants, s'il a des fichiers enfants, il s'appellera à nouveau en passant les enfants et en se répétant.
S'il s'agit d'un fichier, supprimez-le.
(N'utilisez pas cette fonction pour vider le cache de l'application en passant le répertoire du cache car cela supprimera également le répertoire du cache et l'application plantera ... Si vous souhaitez effacer le cache, vous utilisez cette fonction qui ne supprimera pas le dir vous lui passez:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
ou vous pouvez vérifier s'il s'agit du répertoire de cache en utilisant:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Exemple de code pour vider le cache de l'application:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
Au revoir, bonne journée et codage: D