gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:56:11 28 4
gpt4 key购买 nike

我正在开发一个 Java 8 应用程序,该应用程序下载目录/文件列表并将它们存储在生成的 Temp 目录(%LocalAppData%/Temp/ 中的目录)中。下载完成后,会生成一个 XML 文件并以文本形式存储在数据库中。

使用以下命令创建临时目录:

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

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

该方法在使用 @After 注释进行注释的测试函数中调用。调用该方法并测试代码时,我收到一个 IOException:

java.io.IOException:无法删除目录 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;
}
});

删除目录结构时一切都失败。内容好像被删除了。

无法删除临时文件夹中的目录可能是什么问题?我正在考虑打开流,但我似乎已经关闭了所有这些。

最佳答案

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

从java文档复制:

临时文件夹规则允许创建在测试方法完成(无论通过还是失败)时应删除的文件和文件夹。该规则不检查删除是否成功。删除失败不会抛出异常。

  @Rule
public TemporaryFolder folder= new TemporaryFolder();

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

关于java - 无法使用 FileUtils 删除临时文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47592123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com