1

首先,我将在这里提供一个小代码片段:

String path = "".equals(url.getPath()) ? "/" : url.getPath();
java.io.File f = new java.io.File(path);

if (!f.exists()) {
    this.code = 404;  // http Not Found
    return;
}

这里,URL 的类型是java.net.URL,它的值是这样的格式:

file:///directory1/directory2.../filename

上面的代码在处理一般 URL 时 90% 的时间都有效,但是当文件名中包含特殊字符时它会失败。例如:

/tmp/Marissafolli/Receptionist/Administrative Assistant/Marissa's Resume.txt.txt

像这样的 URL 将报告“404”代码,即使它们存在。以下版本适用于这些特殊情况:

java.io.File f = new java.io.File(url.toURI());

url.toURI()仅在 j2SE 1.5.0 中。所以我需要使用第一个版本。我怎样才能让它工作?

4

2 回答 2

2

这不是错误,而是它不是有效的 URL。

对于初学者,您显然需要将这些空白转义到 %20 中。我不知道你用撇号做什么。 该博客建议它应该成为 %27。试试看。

或者只是尝试java.net.URLEncoder看看它给了你什么。

于 2009-06-05T23:44:59.923 回答
0

为什么不先构造一个 URI,然后调用 toURL() 方法。更多信息在这里

[更新] 或者更好的是,为什么不在文件的构造函数中直接使用 URI,因为 URI 类会为您处理编码。

于 2009-06-05T23:59:18.257 回答