+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

متد delete از کلاس File فقط فولدر های خالی را حذف می کند، چگونه می توان یک فولدر را بهمراه محتویاتش را در جاوا حذف کرد؟

1 پاسخ

+2 امتیاز
قبل توسط (1.1هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

برای این کار باید بصورت بازگشتی شروع به پاک کردن فایل های درون فولدر های بکنید تا فولدر کاملا خالی شود و سپس فولدر خالی را حذف کنید:

public static void deleteFolder(File folder) {
    File[] files = folder.listFiles();
    if(files != null) {
        for(File f: files) {
            if(f.isDirectory()) {
                deleteFolder(f);
            } else {
                f.delete();
            }
        }
    }
    folder.delete();
}

ویرایش: در جاوا 7 قابلیتی به نام FileVisitor اضافه شده است که با استفاده از آن و بدون نیاز به نوشتن تابع بازگشتی می توان این کار را انجام داد:

        Files.walkFileTree(Paths.get("yourFolder"), new FileVisitor<Path>() {

            @Override
            public FileVisitResult preVisitDirectory(Path dir
                    , BasicFileAttributes attrs) throws IOException {
                
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult visitFile(Path file
                    , BasicFileAttributes attrs) throws IOException {
                
                Files.delete(file);
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult visitFileFailed(Path file
                    , IOException exc) throws IOException {
                
                return FileVisitResult.CONTINUE;
            }

            @Override
            public FileVisitResult postVisitDirectory(Path dir
                    , IOException exc) throws IOException {
                
                Files.delete(dir);
                return FileVisitResult.CONTINUE;
            }
        });

سوالات مشابه

+1 امتیاز
2 پاسخ 313 بازدید
+1 امتیاز
1 پاسخ 307 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
0 امتیاز
3 پاسخ 551 بازدید
+1 امتیاز
1 پاسخ 340 بازدید
0 امتیاز
0 پاسخ 243 بازدید
0 امتیاز
1 پاسخ 730 بازدید
+1 امتیاز
1 پاسخ 870 بازدید
0 امتیاز
1 پاسخ 5.9هزار بازدید
...