Estou usando esta função recursiva para fazer o trabalho:
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();
}
}
A função verifica se é um diretório ou um arquivo.
Se for um diretório, verifica se há arquivos filho, se ele tiver arquivos filhos se chamará novamente passando os filhos e repetindo.
Se for um arquivo, exclua-o.
(Não use esta função para limpar o cache do aplicativo passando o diretório de cache, pois ele também excluirá o diretório de cache, para que o aplicativo falhe ... Se você deseja limpar o cache, use esta função que não excluirá o diretório dir você passa para ele:
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 você pode verificar se é o diretório do cache usando:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Exemplo de código para limpar o cache do aplicativo:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
Tchau, tenha um bom dia e codificação: D