强制删除文件夹中的所有文件

2022-09-03 04:15:31

我一直在使用特定的代码片段从文件夹中删除文件,但它被证明是非常有问题的,因为也许我忘记关闭一两个输入流。我拥有的代码太大,以至于我无法看到所有未关闭的输入流。有没有办法删除文件,无论是否有打开的输入流?

这是我一直在使用的代码片段;

File fin = new File("C:/ABC Statements final/");
    File[] finlist = fin.listFiles();       
    for (int n = 0; n < finlist.length; n++) {
        if (finlist[n].isFile()) {
        System.gc();
        Thread.sleep(2000);
            finlist[n].delete();
        }
    }        

我已经编辑了代码。此版本有效。


答案 1

提供的代码块中没有 InputStream 实例。

要不编写大量未经测试的 IO 代码,请查看 apache.commons.io 项目。特别是在 FileDeleteStrategy 类中,用于文件删除操作。

您的代码可能如下所示:

File fin = new File("C:/ABC Statements final/");

for (File file : fin.listFiles()) {
    FileDeleteStrategy.FORCE.delete(file);
}   

答案 2

您可以使用:

FileUtils.deleteDirectory(File directory)

来自 Apache Commons