0

如果文件存在于具有 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();  
4

3 回答 3

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;
    }
  }
于 2013-07-22T09:32:56.710 回答
1

向服务器发送 Head Request 以检查文件是否存在。

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;
        }
    }
于 2013-07-22T09:34:10.640 回答
0

如果文件不存在 url.openConnection() 会抛出 FileNotFoundException,你可以捕获它。除此之外,您的代码似乎还可以,但在我看来,使用 BufferedInputStream / BufferedOuputStream 并按字节读取/写入会使它更干净。

于 2013-07-22T09:55:23.113 回答