繁体   English   中英

无法使用FileUtils删除临时文件夹

[英]Unable to delete a temp folder using FileUtils

我正在使用Java 8应用程序,该应用程序下载目录/文件的列表并将其存储在生成的Temp目录( %LocalAppData%/Temp/的目录)中。 所有下载完成后,将生成XML文件并将其作为文本存储在数据库中。

使用以下命令创建一个Temp目录:

Path packageTargetDirectory = java.nio.file.Files.createTempDirectory("packages");

在我的JUnit测试中,我想测试功能。 有用。 因此,在测试之后,我希望我的测试代码以递归方式删除包含目录的目录(使用org.apache.commons.io.FileUtils.deleteDirectory()方法)。

在带有@After批注的测试函数中调用该方法。 调用方法并测试代码时,我得到IOException

java.io.IOException: Unable to delete directory C:\\Users\\martin\\AppData\\Local\\Temp\\packages3096883734780765073\\WindowsAzure.Storage

我进入目录,并在测试运行后尝试删除它:我可以自己删除它。 我尝试了很多事情。 我尝试了org.apache.commons.io.FileUtils.forceDelete()方法。 我还尝试了以下代码进行删除:

Files.walkFileTree(testDataDirectory, new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            Files.delete(file);
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
            Files.delete(dir);
            return FileVisitResult.CONTINUE;
        }
    });

删除目录结构失败。 内容似乎已删除。

无法删除temp文件夹中的目录可能是什么问题? 我本来想打开流,但似乎已经关闭了所有流。

为什么不使用JUnit现有功能?

从Java doc复制:

TemporaryFolder规则允许创建测试方法完成时(无论通过还是失败)应删除的文件和文件夹。 此规则不检查删除是否成功。 万一删除失败,将不会引发任何异常。

  @Rule
  public TemporaryFolder folder= new TemporaryFolder();

  @Test
  public void testUsingTempFolder() throws IOException {
      File createdFile= folder.newFile("myfile.txt");
      File createdFolder= folder.newFolder("subfolder");
      // ...
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM