+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 پاسخ 307 بازدید
+1 امتیاز
1 پاسخ 298 بازدید
سوال شده 11 سال قبل در برنامه نویسی توسط سلطانی (1.1هزار امتیاز)
0 امتیاز
3 پاسخ 538 بازدید
+1 امتیاز
1 پاسخ 334 بازدید
0 امتیاز
0 پاسخ 237 بازدید
0 امتیاز
1 پاسخ 716 بازدید
+1 امتیاز
1 پاسخ 845 بازدید
0 امتیاز
1 پاسخ 5.8هزار بازدید
...