我能否检查URL上的文件是否存在?

10
2个回答

12

在Java中也很相似。你只需要评估HTTP响应代码:

final URL url = new URL("http://some.where/file.html");
url.openConnection().getResponseCode();

更完整的示例可以在这里找到。


2
我想指出的是,有些网站实际上不会返回404状态码,而是重定向到自定义错误页面(并返回200成功)。这是不好的行为,但值得确保您正在测试的站点不会提供这些“软”404。 - Kris
  1. 你可能想在openConnection()方法上捕获UnknownHostExceptionFileNotFoundException(都是IOException)。
  2. 你还需要将URLConnection强制转换为HttpURLConnection,以便能够调用getResponseCode()方法。并且@Kris:重定向会导致301或302,您需要以任何方式处理它们。例如,URL可能已更新。
- BalusC
如果文件非常大,您最终将下载整个内容以检查存在性。如果您发出HEAD请求而不是GET,您将获得更好的结果。 - Raymond Kroeker

5

提交一个干净的版本,更易于复制和粘贴。

try {
    final URL url = new URL("http://your/url");
    HttpURLConnection huc = (HttpURLConnection) url.openConnection();
    int responseCode = huc.getResponseCode();
    // Handle response code here...
} catch (UnknownHostException uhe) {
    // Handle exceptions as necessary
} catch (FileNotFoundException fnfe) {
    // Handle exceptions as necessary
} catch (Exception e) {
    // Handle exceptions as necessary
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接