【发布时间】:2013-11-16 20:18:36
【问题描述】:
我正在尝试制作一个简单的 Http 服务器。
但我有一个小问题。
如果我的 /www 目录在 .jar 文件编译中,则一切正常:
代码:
private static final String DEFAULT_FILES_DIR = "/www";
....
private String getURLFromHeader(String header) {
//gettint url from header
....
return DEFAULT_FILES_DIR + url;
}
....
System.out.println("Resources: " + url + "\n");
System.out.println("Result code: " + code + "\n");
对于 index.html,我变成:Resources: /www/index.html Result code: 200 -> 一切正常。
但是当我这样做时:
private static final String DEFAULT_FILES_DIR = "D:/.../.../.../www"; // absolute pass;
....
....
服务器说“不,我不知道你不会从我这里得到什么”! =)
并输入:Resources: D:/.../.../.../www/index.html Result code: 404 -> 找不到文件。
可能是什么?
附:我尝试输入private static final String DEFAULT_FILES_DIR = "D:\\...\\...\\...\\www";,但它不起作用!))))
【问题讨论】:
-
您能告诉我们您是如何尝试访问此资源的吗?此外,您的方法的名称暗示它应该返回一个 URL,但“D:\...”不是一个有效的 URL。文件 URL 以方案“file://”开头。您可能希望使用
java.net.URL而不是String来强制执行正确的语义。 -
getURLFromHeader() 返回 String(
url),默认 dir_url + file_url。这个url采用另一种方法,而不是:InputStream stream = HttpServer.class.getResourceAsStream(**url**);并检查:int code = (stream != null) ? 200 : 404;。或者你想看什么?如果有必要,我可以显示完整的代码。