Path myFile = Paths.get("c:").resolve("folderOne").resolve("filename.txt");
输出: 这将在程序运行的文件夹中创建folderOne,但不在c:\ 正如所希望的那样。
最佳答案
修复
在驱动器名称后使用斜杠或反斜杠:
final Path path = Paths.get("c:/").resolve("folderOne").resolve("filename.txt");
Files.createDirectories(path.getParent());
请注意,斜杠 (c:/
) 在 Windows 上工作正常。反斜杠也有效:Paths.get("c:\\")
。
另请注意,Paths.get()
和 Path.resolve()
本身不会创建目录。您可以使用Files.createDirectories()
来完成这项工作。
使用Paths.get()解析整个路径
如果路径是固定的,你可以直接用Paths.get()
解析它——不需要调用.resolve()
:
final Path path = Paths.get("c:/folderOne/filename.txt");
同样,斜杠和反斜杠都可以在 Windows 上使用。
驱动器相对路径
C:
,不带(反)斜杠会创建一个 DRIVE_RELATIVE
路径 — 意味着该路径从给定驱动器上的当前文件夹开始。引用自https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats
C:Projects\apilibrary\apilibrary.sln
A relative path from the current directory of theC:
drive.
您可以通过转换为绝对路径来看到这一点:
System.out.println(
Paths.get("c:").resolve("folderOne").resolve("filename.txt")
.toAbsolutePath()
);
链接:
关于java - 如何在 c :\using Paths(not File)? 处创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52401424/