检查具有URL的远程服务器上是否存在文件

时间:2013-07-22 09:28:41

标签: java url

如果具有URL的远程服务器上存在文件,我如何检查Java?如果是,则下载文件。

这是我的代码示例 - 它打开指定的URL,然后创建I / O流以复制URL指定的文件。但最终它没有按照预期的那样发挥作用。

URL url = new URL(" //Here is my  URL");     
url.openConnection();      
InputStream reader = url.openStream();      
FileOutputStream writer = new FileOutputStream("t");    
byte[] buffer = new byte[153600];    
int bytesRead = 0;    
while ((bytesRead = reader.read(buffer)) > 0)    
{    
    writer.write(buffer, 0, bytesRead);    
    buffer = new byte[153600];    
}    
writer.close();    
reader.close();  

3 个答案:

答案 0 :(得分:2)

这样做

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;
    }
  }

答案 1 :(得分:1)

向服务器发送头部请求以检查是否存在文件。

import java.net.*;
import java.io.*;

    public static boolean fileExists(String URL){
    try {
        HttpURLConnection.setFollowRedirects(false);
        HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
        con.setRequestMethod("HEAD");
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK)
            return true;
        else
            return false;
     }
     catch (Exception e) {
        e.printStackTrace();
        return false;
        }
    }

答案 2 :(得分:0)

如果文件不存在,url.openConnection()将提示FileNotFoundException,你可以捕获它。除了你的代码似乎没问题,虽然在我的视图中使用BufferedInputStream / BufferedOuputStream并按字节读/写会使它更清晰。