Java 我可以检查URL上是否存在文件吗?

Java 我可以检查URL上是否存在文件吗?,java,http,Java,Http,这个链接非常适合C#,java呢。我尝试过,但没有找到好的解决方案。这在Java中非常相似。您只需评估HTTP响应代码: final URL url = new URL("http://some.where/file.html"); url.openConnection().getResponseCode(); 可以找到更完整的示例。提供了一个更易于复制和粘贴的干净版本 try { final URL url = new URL("http://your/url"); Http


这个链接非常适合C#,java呢。我尝试过,但没有找到好的解决方案。

这在Java中非常相似。您只需评估HTTP响应代码:

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

可以找到更完整的示例。

提供了一个更易于复制和粘贴的干净版本

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
}

我只是想指出,一些网站实际上不会返回404状态码,而是重定向到自定义错误页面(并返回200成功)。这是不好的行为,但值得确保您测试的站点没有提供这些“软”404。1)您可能希望捕获
openConnection()
方法上的
UnknownHostException
FileNotFoundException
(两者都只是
IOException
)。2) 您还希望将
URLConnection
转换为
HttpURLConnection
,以便能够调用
getResponseCode()
方法。和@Kris:重定向将导致301或302,您需要以任何方式处理它们。例如,URL可能已更新。此外,如果文件相当大,您将下载整个内容以检查是否存在。如果您发出HEAD请求而不是GET,您将获得更好的里程数。