当前位置: 首页 > 面试题库 >

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

高英彦
2023-03-14
问题内容

我正在使用以下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。



 类似资料:
  • 问题内容: 是否可以使用cURL部分下载远程文件?假设远程文件的实际文件大小为1000 KB。如何仅下载其中的前500 KB? 问题答案: 您还可以使用php-curl扩展名设置range标头参数。 但是如前所述,如果服务器不遵循该标头而是发送整个文件,则curl将下载所有文件。例如,http: //www.php.net忽略标题。但是,您可以(另外)设置一个写函数回调,并在收到更多数据时中止请求

  • 我想用Java从网上下载并解析Mapbox PBF文件。如果我手动下载该文件,我可以解析它而不会出现任何错误。但是,如果我使用Java代码下载文件,然后尝试解析下载的文件,则会出现以下异常: 通过谷歌搜索这个错误,一些人说该文件已损坏。 当我试图以编程的方式将这种二进制数据写入文件时,我是否遗漏了什么? 下面的代码显示了我下载文件的两种方式: 技巧1 技巧2

  • 我无法找到正确的方法来实现我的目标,即下载带有java selenium脚本的pdf。

  • 问题内容: 我编写了一些代码来下载我所做的网络广播的一集。它获取剧集的URL,并获取保存它的位置。但是,它最多只能下载16MB,然后自动取消。我不完全确定要增加此值需要更改什么值。是否可以,有人可以指出正确的方向吗?谢谢! 下载代码: 问题答案: 快速查看transferFrom的文档: 好。 计数的值1 << 24(来自原始问题)等于16M 我想这就是您的问题的答案:-)

  • 问题内容: 我正在尝试使用setRequestProperty(“ Range”,“ bytes =” + startbytes +“-” + endbytes);给定下载URL来下载文件的一部分。以下代码片段显示了我要执行的操作。 问题是,正在引发一个异常,该异常表示“建立连接后无法设置请求属性”。请帮助我解决此问题。 问题答案: 假设您正在使用HTTP进行下载,则需要使用HEAD http动词

  • 问题内容: 我正在尝试获取下载链接并下载文件。 我有一个包含以下链接的日志文件: 我有这样的代码: 到目前为止,我不知道如何获取下载链接并下载它。可以使用selenium下载文件吗? 问题答案: 根据文档,您应该配置为自动下载具有指定内容类型的文件。这是在txt文件中使用第一个URL的示例,该文件将文件保存在当前目录中: 注意,我也简化了xpath。