İşi yapmak için bu özyinelemeli işlevi kullanıyorum:
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();
}
}
İşlev bir dizin mi yoksa dosya mı olduğunu kontrol eder.
Eğer bir dizin ise alt dosyaları olup olmadığını kontrol eder, alt dosyaları varsa kendini tekrar çocuklarını geçip tekrar eder.
Eğer bir dosya ise onu siler.
(Bu işlevi, önbellek dizinini geçerek uygulama önbelleğini temizlemek için kullanmayın, çünkü uygulama kilitlenecek şekilde önbellek dizinini de silecektir ... Önbelleği temizlemek isterseniz, dir ona geçmek:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
veya aşağıdakileri kullanarak önbellek dizini olup olmadığını kontrol edebilirsiniz:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
Uygulama önbelleğini temizlemek için örnek kod:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
Güle güle, iyi günler ve kodlama: D