Java路径异常



所以,我以前使用了Java.io.file。但是现在,当切换到java.nio.path时,我遇到了一些问题...

我使用的是基本上是加载/保存文件,在我的程序启动和关机上。

我在多个位置使用它,但我将输入一个示例:

  Objects.requireNonNull(directory, "directory");
    if (this.myObjectMap.isEmpty()) {
        return;
    }
    Files.list(directory).forEach(file -> {
        try {
            Files.deleteIfExists(file);
        } catch (IOException exception) {
            exception.printStackTrace();
        }
    });
    Files.createDirectories(directory);
    for (Object object : this.myObjectMap.values()) {
        Path destination = directory.resolve(object.toString() + ".json");
        Files.deleteIfExists(destination);
        Files.createFile(destination);
        JsonObject properties = new JsonObject();
        JSONFileHandler.save(destination, properties);
    }

我的问题是,每次我做类似的事情时,它都会在使用路径之前引发nosuchfileexception异常...但是我不知道我在做什么错,因为我在创建创建后检查了它是否存在路径。

update

例外stacktrace如下:

java.nio.file.NoSuchFileException: **the directory**
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.WindowsDirectoryStream.<init>(WindowsDirectoryStream.java:86)
at sun.nio.fs.WindowsFileSystemProvider.newDirectoryStream(WindowsFileSystemProvider.java:518)
at java.nio.file.Files.newDirectoryStream(Files.java:457)
at java.nio.file.Files.list(Files.java:3451)

这是Path的Javadoc,这就是它所说的:

可以用来在文件系统中找到文件的对象。它会 通常表示依赖系统的文件路径。

so,路径 Just 代表Path,它不是指向现有文件或目录的指针,因此可能存在或可能不存在。

在我们的示例中,我们需要在调用Files.list之前检查Path是否存在,这将确保我们通过有效的路径迭代,例如:

Path directory = Paths.get("some directory");
Objects.requireNonNull(directory, "directory");
if(Files.exists(directory)){
    Files.list(directory).forEach(file -> {
        try {
            System.out.println(file);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    });
}

相关内容

  • 没有找到相关文章

最新更新