Saya menggunakan fungsi rekursif ini untuk melakukan pekerjaan:
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();
}
}
Fungsi memeriksa apakah itu adalah direktori atau file.
Jika sebuah direktori memeriksa apakah ia memiliki file anak, jika memiliki file anak, akan memanggil dirinya sendiri untuk meneruskan anak-anak dan mengulanginya.
Jika itu file, hapus saja.
(Jangan gunakan fungsi ini untuk menghapus cache aplikasi dengan mengirimkan direktori cache karena itu akan menghapus direktori cache juga sehingga aplikasi akan macet ... Jika Anda ingin menghapus cache Anda menggunakan fungsi ini yang tidak akan menghapus dir Anda lolos:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
atau Anda dapat memeriksa apakah itu cache dir menggunakan:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Kode contoh untuk menghapus cache aplikasi:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
Sampai jumpa, Semoga harimu menyenangkan & coding: D