+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 پاسخ 302 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
0 امتیاز
3 پاسخ 545 بازدید
+1 امتیاز
1 پاسخ 339 بازدید
0 امتیاز
0 پاسخ 242 بازدید
0 امتیاز
1 پاسخ 721 بازدید
+1 امتیاز
1 پاسخ 856 بازدید
0 امتیاز
1 پاسخ 5.9هزار بازدید
...