【问题标题】:Create directory at given path in Java - Path with space在 Java 中的给定路径创建目录 - 带空格的路径
【发布时间】:2016-01-08 12:33:16
【问题描述】:

我的 java 代码如下-

string folderName = "d:\my folder path\ActualFolderName";
File folder = new File( folderName );
folder.mkdirs();

所以这里给定的目录路径中有空间。创建的文件夹是 d:\my,不是我所期望的。

是否有任何特殊的方法来处理文件/文件夹路径中的空间。

【问题讨论】:

  • 你可以用“_”替换空格
  • "\" 用于转义字符串中的特殊字符..
  • 你试过用 `` 转义空间吗?
  • 可能是用户定义的值。我无法控制它。
  • 您显示的代码甚至不是有效的 Java。

标签: java


【解决方案1】:

您应该使用\\ 获取 java 中的路径。试试这个代码

String folderName = "D:\\my folder path\\ActualFolderName";
File folder = new File( folderName );
folder.mkdirs();

或使用正斜杠/,这样您的应用程序将独立于操作系统。

String folderName = "D:/my folder path1/ActualFolderName";

【讨论】:

    【解决方案2】:

    除非您运行的是非常旧的 Java 版本,否则请使用 JDK7 中的 Path API:

    Path p = Paths.get("d:", "my folder path", "ActualFolderName");
    File f = p.toFile();
    

    无论操作系统如何,它都会自动为您处理文件分隔符和空格。

    【讨论】:

      【解决方案3】:

      以下替代方案应适用于 Windows:

      String folderName = "d:\\my\\ folder\\ path\\ActualFolderName";
      String folderName = "\"d:\\my folder path\\ActualFolderName\"";
      

      【讨论】:

        【解决方案4】:

        您需要转义您的路径(在您的路径中使用\\ 而不是\)并且您还需要使用带有大写S 的String,因为您发布的代码无法编译。试试这个,它应该可以工作:

        String folderName = "D:\\my folder path\\ActualFolderName";
        new File(folderName).mkdirs();
        

        如果您从用户输入中获取文件夹名称(即未在代码中硬编码),则无需转义,但应确保它确实是您所期望的(将其打印在您的创建文件之前的代码进行验证)。

        如果您仍然遇到问题,您可能想尝试使用系统文件分隔符,您可以使用System.getProperty(file.separator) 或访问File 类中的等效字段来获得。还要检查this question

        【讨论】:

          【解决方案5】:

          你需要转义路径分隔符:

          String folderName = "D:\\my folder path\\ActualFolderName";
          
          File file = new File(folderName);
          if (!file.exists()) {
              file.mkdirs();
          }
          

          【讨论】:

          • 仅供参考:file.exists() 检查是不必要的,因为mkdirs() 只会在目录不存在时创建目录。
          【解决方案6】:

          首先,无论如何,您的字符串路径都不正确,因为反斜杠必须用另一个反斜杠转义,否则\m 将被解释为特殊字符。

          使用文件 URI 怎么样?

          String folderName = "d:\\my folder path\\ActualFolderName";
          URI folderUri = new URI("file:///" + folderName.replaceAll(" ", "%20"));
          File folder = new File(folderUri);
          folder.mkdirs();
          

          【讨论】:

          • 为什么URI folderUri = new URI(("file:///"+ folderName.replaceAll(" ", "%20")));中多了个圆括号
          猜你喜欢
          • 2016-08-02
          • 2020-05-04
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          • 2022-07-27
          • 2019-06-08
          • 2019-06-30
          • 2018-05-31
          相关资源
          最近更新 更多