+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 پاسخ 464 بازدید
+1 امتیاز
1 پاسخ 515 بازدید
سوال شده 12 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
0 امتیاز
3 پاسخ 776 بازدید
+1 امتیاز
1 پاسخ 525 بازدید
0 امتیاز
0 پاسخ 385 بازدید
0 امتیاز
1 پاسخ 976 بازدید
+1 امتیاز
1 پاسخ 1.3هزار بازدید
0 امتیاز
1 پاسخ 6.2هزار بازدید
...