+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 پاسخ 371 بازدید
+1 امتیاز
1 پاسخ 435 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
0 امتیاز
3 پاسخ 665 بازدید
+1 امتیاز
1 پاسخ 447 بازدید
0 امتیاز
0 پاسخ 320 بازدید
0 امتیاز
1 پاسخ 876 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
0 امتیاز
1 پاسخ 6.1هزار بازدید
...