Estoy usando esta función recursiva para hacer el trabajo:
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 función comprueba si es un directorio o un archivo.
Si es un directorio, verifica si tiene archivos secundarios, si tiene archivos secundarios se llamará a sí misma nuevamente pasando a los hijos y repitiendo.
Si es un archivo, elimínelo.
(No use esta función para borrar el caché de la aplicación pasando el directorio de caché porque también eliminará el directorio de caché, por lo que la aplicación se bloqueará ... Si desea borrar el caché, use esta función que no borrará el dir pasas a ella:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
o puede verificar si es el directorio de caché usando:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Código de ejemplo para borrar el caché de la aplicación:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
Adiós, que tengas un buen día y codificación: D