Path.toFile() 和 new File(pathString) 的不同行为

ata*_*ata 5 java file network-drive java-io java.nio.file

我在 Windows 中安装了网络驱动器(samba 服务器)。

我在该驱动器中有一个文件,我想在 Java 程序中读取该文件。

在我尝试使用以下方法读取文件之前:

Paths.get(basePath, fileName).toFile()
Run Code Online (Sandbox Code Playgroud)

但由于文件不存在而失败。文件就在那里,路径也很好。

然后我尝试了以下有效的代码:

String path = Paths.get(basePath, fileName).toAbsolutePath().toString()
File file = new File(path)
Run Code Online (Sandbox Code Playgroud)

两种方法有什么区别吗?是否需要任何安全设置?

更新

因此,在我使用第二部分(有效的部分)之后,我回到原来的部分(原样)来验证调试,这次它有效了。我用同一目录中的另一个文件尝试了它,但失败了。看起来很奇怪,但我会检查更多。

Mat*_*att 1

我会检查你的文件路径,也许还有导入,因为这对我来说效果很好,也不确定为什么你会破坏你的路径,但也许正在谈论 2 个不同的路径导入

System.out.println("File:"+new File(path).exists());
System.out.println("Path:"+Paths.get(path).toFile().exists());
Run Code Online (Sandbox Code Playgroud)

我的进口如果你想比较

import java.io.File;
import java.nio.file.Paths;
Run Code Online (Sandbox Code Playgroud)

我想说尝试一下完全没有中断的完整路径,看看是否有任何变化