HttpURLConnection并下载大文件

时间:2015-08-01 16:20:02

标签: java http httpurlconnection

我使用HttpURLConnection从网址下载文件。

 URL obj = new URL(url);
 HttpURLConnection con = (HttpURLConnection) obj.openConnection();

 // optional default is GET
 con.setRequestMethod("GET");
 con.setRequestProperty("Cache-Control", "no-cache");

 int responseCode = con.getResponseCode();

 System.out.println("\nSending 'GET' request to URL : " + url);
 System.out.println("Response Code : " + responseCode);

 try {
     InputStream inputStream = con.getInputStream();
     FileOutputStream outputStream = new FileOutputStream("C:\\programs\\TRYFILE.csv");

     int bytesRead = -1;
     byte[] buffer = new byte[4096];

     while ((bytesRead = inputStream.read(buffer)) != -1) {
        outputStream.write(buffer, 0, bytesRead);
     }

 } catch(Exception e) {

 } finally {
       outputStream.close(); 
       inputStream.close();
 }

该代码适用于下载小型文件(即25 KB)。我没有尝试下载大文件(大约100 MB),因为来自特定URL的文件总是很小。

我想知道如果我尝试使用此代码下载更大的文件会发生什么:它会继续工作还是抛出异常?我是否需要为更大的文件实现代码(例如,使用setConnectTimeoutsetReadTimeout)?

是否有网址可以建议我可以尝试使用此代码下载大文件?

1 个答案:

答案 0 :(得分:0)

正如评论中所建议的那样,自己创建一个大文件。要通过HTTP提供服务,最简单的方法可能是从放置文件的目录运行Python 3 -

python -m http.server

将在8000上启动服务器。有关详细信息,请参阅this blog post,或查看python文档。

然后你可以自己测试一下。