从Java访问文件名中带有空格的文件

Posted

技术标签:

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

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

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

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

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

但没有任何帮助。

【问题讨论】:

向我们展示一些代码和示例。 Java 本身处理文件名中的空格很好,没有转义或任何东西。 您可能正在尝试访问运行 jvm 的用户无权访问的文件。这是我的情况。 【参考方案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 打印出来,请解析为具有适当访问权限的现有文件。

【讨论】:

以上是关于从Java访问文件名中带有空格的文件的主要内容,如果未能解决你的问题,请参考以下文章

Git添加一个名称中带有空格的文件夹

如何在 python 中导入名称中带有空格的文件?

无法遍历文件名中带有空格的文件、Windows 批处理文件和图像魔法

如何检查批处理脚本中带有空格的路径中文件的大小

Excel VBA Shell 命令在文件路径中带有空格

Windows 7 与 Windows 10 - 处理批处理文件中带有空格的文件夹名称