首页 > 解决方案 > 如何使用路径(不是文件)在 c:\ 创建文件夹?

问题描述

Path myFile = Paths.get("c:").resolve("folderOne").resolve("filename.txt");

输出:这会在程序运行的文件夹中创建 folderOne,但不会像希望的那样在 c:\ 中创建。

标签: javanio

解决方案


修复

在驱动器名称后使用斜杠或反斜杠:

    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://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats的引用

C:Projects\apilibrary\apilibrary.sln驱动器当前目录的 相对路径。C:

您可以通过转换为绝对路径来看到这一点:

System.out.println(
    Paths.get("c:").resolve("folderOne").resolve("filename.txt")
        .toAbsolutePath()
);

链接:


推荐阅读