使用其URL检查远程服务器上是否存在文件

如果远程服务器(由HTTP提供服务)上存在一个文件,并且拥有其URL,那么如何检查Java? 我不想下载该文件,只需检查它的存在。

import java.net.*; import java.io.*; public static boolean exists(String URLName){ try { HttpURLConnection.setFollowRedirects(false); // note : you may also need // HttpURLConnection.setInstanceFollowRedirects(false) HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection(); con.setRequestMethod("HEAD"); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } } 

如果连接到URL( 使用HttpURLConnection创build )返回HTTP状态代码200,则该文件存在。

编辑:请注意,因为我们只关心它是否存在或不需要请求整个文档。 我们只需要使用HTTP HEAD请求方法来请求头部来检查它是否存在。

资料来源: http : //www.rgagnon.com/javadetails/java-0059.html

 public static boolean exists(String URLName){ try { HttpURLConnection.setFollowRedirects(false); // note : you may also need // HttpURLConnection.setInstanceFollowRedirects(false) HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection(); con.setRequestMethod("HEAD"); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } } 

检查URL是否存在

假设文件通过http服务,您可以向URL发送HEAD请求并检查返回的http响应代码。

唯一真正的方法是下载:)。 在一些服务器上,通常可以通过发出一个HEAD请求来解决同一个url的GET请求。 这将只返回资源元数据,而不是实际的文件内容。

更新:检查org.life.java的答案为实际的技术细节如何做到这一点。

检查这个,它适用于我。 源URL: 检查服务器上是否存在URL

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String customURL = "dc3/08/273858/273858.jpg"; MyTask task = new MyTask(); task.execute(customURL); } private class MyTask extends AsyncTask<String, Void, Boolean> { @Override protected void onPreExecute() { } @Override protected Boolean doInBackground(String... params) { try { HttpURLConnection.setFollowRedirects(false); HttpURLConnection con = (HttpURLConnection) new URL(params[0]).openConnection(); con.setRequestMethod("HEAD"); System.out.println(con.getResponseCode()); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } } @Override protected void onPostExecute(Boolean result) { boolean bResponse = result; if (bResponse==true) { Toast.makeText(MainActivity.this, "File exists!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "File does not exist!", Toast.LENGTH_SHORT).show(); } } } } 

对它进行URLConnection。 如果你成功,它就存在。 你可能不得不打开一个inputstream到它,但你不必阅读的内容。 您可以立即closuresstream。