【问题标题】:Accessing files with spaces in filename from Java从Java访问文件名中带有空格的文件
【发布时间】:2011-07-18 13:09:03
【问题描述】:

我想从 java 程序中访问文件名中有空格的目录中的文件,但它不访问文件。

场景是我在文件中有文件名。从该文件中读取文件名,并且无法在 java 中打开带有空格的文件。

我们正在使用 File.exist 函数来检查文件是否存在,但它返回 false。

我尝试了几种格式来表示空格,例如文件名 ab c 的 "ab\ c" 和同一文件的 ab%20c。

但没有任何帮助。

【问题讨论】:

  • 向我们展示一些代码和示例。 Java 本身处理文件名中的空格很好,没有转义或任何东西。
  • 您可能正在尝试访问运行 jvm 的用户无权访问的文件。这是我的情况。

标签: java file operating-system


【解决方案1】:

我在 Windows 操作系统上尝试从 Servlet 读取资源位置时遇到了类似的问题。以下行对我有用。

String path = config.getServletContext().getResource("/app").toString();
path = URLDecoder.decode(path,"UTF-8");
path = path.replaceAll("file:/", "");
path = path.replaceAll("\\u0020", "\\ ");
File verLocation = new File(path);

在上述所有行之后,verLocation.exists() 返回 true,否则也返回 false。

【讨论】:

    【解决方案2】:

    解码路径,就像这样

    String decodedPath = URLDecoder.decode(path, "UTF-8");
    

    【讨论】:

      【解决方案3】:

      如果您将输入作为文件路径,请尝试使用sc.nextline() 读取空格

      【讨论】:

        【解决方案4】:

        这对我来说很好。我根本没有逃避它们。

        System.out.println(new File("/tmp/test 1/").exists());
        

        确保为您的操作系统使用正确的文件分隔符。

        System.getProperty("file.separator")
        

        【讨论】:

          【解决方案5】:

          试试converting it to a URL

          URL url = file.toURI().toURL();
          

          【讨论】:

            【解决方案6】:

            嗯,在阅读 Java 时,我从来没有遇到过文件名中的空格问题。只需确保正确转义路径分隔符即可。我希望文件名,如果您要使用 Java 打印出来,请解析为具有适当访问权限的现有文件。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-10-08
              • 1970-01-01
              • 2014-07-12
              • 2011-03-09
              相关资源
              最近更新 更多