java - 如何在 c :\using Paths(not File)? 处创建文件夹

标签 java nio

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 the C: 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/

相关文章:

java - ANR(应用程序无响应)在我不明白的 Google Play 控制台中崩溃

每个连接模型的 Java 线程与 NIO

java - 从 linux 传输到 windows 时换行符丢失

java - Files.walk 跳过目录

java - 为什么在尝试运行我的应用程序时会收到 NoClassDefFoundError?

Java n 节点树

java - 用于从视频创建小 gif 的 Lib/API?

Java BufferedOutputStream策略

Java NIO Files count()方法统计行数

java - 如何使用 DirectoryStream.Filter 过滤隐藏文件