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

Err*_*ion 14 java file-io fileinputstream delete-file

我一直在使用一段特定的代码来删除文件夹中的文件,但事实证明它很成问题,因为我可能忘了关闭一两个InputStream.我的代码是如此之大,以至于我无法看到所有未关闭的输入流.有没有办法删除文件是否有一个打开的InputStream?

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

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();
        }
    }        
Run Code Online (Sandbox Code Playgroud)

我编辑了代码.这个版本有效.

Dmy*_*kov 20

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

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

您的代码可能如下所示:

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

for (File file : fin.listFiles()) {
    FileDeleteStrategy.FORCE.delete(file);
}   
Run Code Online (Sandbox Code Playgroud)

  • 这不是我想要摆脱的异常,我需要删除文件. (7认同)
  • 实际上从你上面共享的链接,我找到了我的问题的答案.我添加了位`System.gc()`和'Thread.sleep`位,文件被删除了.谢谢你,兄弟. (4认同)

Paw*_*wel 5

您可以使用:

FileUtils.deleteDirectory(File directory)
Run Code Online (Sandbox Code Playgroud)

来自阿帕奇共享资源

  • 可能最好使用`cleanDirectory()`,因为它说它不会删除目录。但是,我并不是 100% 确定“干净”是什么意思。我*假设*这意味着它删除了目录内容,但文档*糟糕*,所以我不能确定。 (4认同)