java - 如何使用 Java 下载文件的一部分?

标签 java download urlconnection

我正在使用此 Java 代码从 Internet 下载文件:

String address = "http://melody.syr.edu/pzhang/publications/AMCIS99_vonDran_Zhang.pdf";
URL url = new URL(address);
System.out.println("Opening connection to " + address + "...");
URLConnection urlC = url.openConnection();
urlC.setRequestProperty("User-Agent", "");
urlC.connect();
InputStream is = urlC.getInputStream();
FileOutputStream fos = null;
fos = new FileOutputStream("myFileName");
int oneChar, count = 0;
while ((oneChar = is.read()) != -1) {
    System.out.print((char)oneChar);
    fos.write(oneChar);
    count++;
}
is.close();
fos.close();
System.out.println(count + " byte(s) copied");

我想知道是否有办法只下载文件的一部分。 例如,对于 5MB 的文件,下载最后 2MB。

最佳答案

如果服务器支持(HTTP 1.1 服务器应该),您可以使用范围请求:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

此外,一次读取一个字符的效率非常低 - 您应该分块读取,例如 4、16 或 32 KB。

关于java - 如何使用 Java 下载文件的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127104/

相关文章:

java - 在两个非常大的范围之间找到素数

performance - 平均用户下载速度

file-upload - 我将如何限制 golang 中服务器的上传和下载速度?

java - Double.Min_Value 未按预期工作

java - 如何在MySQL中创建与包含关系的组合键相对应的java对象

java - 为什么JComboBox会忽略空值状态?

javascript - 在 IE11 中下载文件出现错误 "' Uint8Array' is undefined”

java - 如何在 URLConnection 中发送 cookie?

java - 使用 Java URLConnection 类代理

java.net.ConnectException : Connection timed out while connecting through a proxy 异常