使用java.nio.file.Files.createTempDirectory时出现NoSuchFileException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java.nio.file.Files.createTempDirectory时出现NoSuchFileException相关的知识,希望对你有一定的参考价值。

尝试使用java.nio.file.Files.createTempDirectory创建临时目录时出现问题。尝试创建目录时,我不断收到NoSuchFileException。

这是我的代码:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class TempFileTesting {
   private static final String ROOT = "/resources/";

   public static void main(String[] args) throws Exception{
      Path root = Paths.get(ROOT);
      Path tempDir = Files.createTempDirectory(root, "dir");
      Path tempFile = Files.createTempFile(tempDir, "t1", "t2");
   }
}

当我这样做时,我在调用“createTempDirectory”的行上得到NoSuchFileException,尽管根路径显然已成功创建。资源目录确实存在。

StackTrace看起来像这样:

java.nio.file.NoSuchFileException: 
esourcesdir170003182480656885
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:504)
at java.nio.file.Files.createDirectory(Files.java:674)
at java.nio.file.TempFileHelper.create(TempFileHelper.java:136)
at java.nio.file.TempFileHelper.createTempDirectory(TempFileHelper.java:173)
at java.nio.file.Files.createTempDirectory(Files.java:950)
at filetestingstuff.testers.TempFileTesting.main(TempFileTesting.java:15)

完整路径:“C: Users Admin Desktop eclipse-oxygen workspace FileStuff resources”

有没有人知道为什么这会导致此异常发生?我很感激任何建议,无论多小。

答案

您将"/resources/"指定为创建临时目录的目录的路径。 首先,它不是Windows的有效格式。在我测试时,它会在安装了Windows的驱动器的根目录下创建temp目录。

除了你想要的是一个相对路径:"resources"到JVM的工作文件夹,即C:UsersAdminDesktopeclipse-oxygenworkspaceFileStuff。请注意,不再需要尾随/。 所以这应该解决你的问题:

private static final String ROOT = "resources";     

最后,您应该避免使用C:Users文件夹来包含Java源代码。你也可能有正确的问题。 它们应位于非特定的Windows目录中。

以上是关于使用java.nio.file.Files.createTempDirectory时出现NoSuchFileException的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)