【发布时间】:2015-08-01 16:20:01
【问题描述】:
我使用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 的文件总是很小。
我想知道如果我尝试使用此代码下载更大的文件会发生什么:它会继续工作还是抛出异常?对于更大的文件,我是否需要实现代码(例如使用setConnectTimeout 或setReadTimeout)?
您是否可以建议我可以尝试使用此代码下载大文件的网址?
【问题讨论】:
-
-
你能推荐包含大文本或 csv 文件的 url 吗?因为我无法尝试使用我的 URL?我的 URL 总是提供小文件。
-
生成一个大文件,将其放在服务器上可访问的位置,并使用指向该文件的 URL。应该不难。请记住多次(循环)运行此实验,以增加遇到(可能)问题的机会。
-
您的主线程将被锁定,直到下载完成。所以,如果你想让你的程序保持活跃,你应该在另一个线程中执行该任务。
标签: java http httpurlconnection