ฉันใช้ฟังก์ชันเรียกซ้ำนี้เพื่อทำงาน:
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();
}
}
ฟังก์ชั่นตรวจสอบว่ามันเป็นไดเรกทอรีหรือไฟล์
ถ้ามันเป็นไดเรกทอรีตรวจสอบว่ามันมีไฟล์เด็กถ้ามันมีไฟล์เด็กจะเรียกตัวเองอีกครั้งผ่านเด็ก ๆ และทำซ้ำ
ถ้าเป็นไฟล์มันจะลบทิ้ง
(อย่าใช้ฟังก์ชั่นนี้เพื่อล้างแคชของแอพโดยส่งแคช dir เพราะมันจะลบแคช dir ด้วยดังนั้นแอปจะหยุดทำงาน ... หากคุณต้องการล้างแคชคุณใช้ฟังก์ชันนี้ที่จะไม่ลบ dir คุณผ่านไป:
public static void deleteDirContents(@NonNull File mFile){
if (mFile.isDirectory() && mFile.listFiles() != null && mFile.listFiles().length > 0x0) {
for (File file : mFile.listFiles()) {
deleteDirAndContents(file);
}
}
}
หรือคุณสามารถตรวจสอบว่ามันเป็นแคช dir โดยใช้:
if (!mFile.getAbsolutePath().equals(context.getCacheDir().getAbsolutePath())) {
mFile.delete();
}
โค้ดตัวอย่างเพื่อล้างแคชแอป:
public static void clearAppCache(Context context){
try {
File cache = context.getCacheDir();
FilesUtils.deleteDirContents(cache);
} catch (Exception e){
MyLogger.onException(TAG, e);
}
}
ลาก่อนขอให้มีความสุขในวันนี้และการเข้ารหัส: D