从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访问文件名中带有空格的文件的主要内容,如果未能解决你的问题,请参考以下文章