我需要抓取一个在线文件(比如http://www.example.com/information.asp)并保存到一个目录中.我知道有几种方法可以一行一行地抓取和读取在线文件(URL),但是有没有一种方法可以使用Java下载并保存文件?

推荐答案

试一试Java NIO个:

URL website = new URL("http://www.website.com/information.asp");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("information.html");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);

使用transferFrom()比从源通道读取并写入该通道的简单循环要高效得多.许多操作系统可以直接将字节从源通道传输到文件系统缓存,而无需实际复制它们.

更多信息请查看here.

Note:Transfer From中的第三个参数是要传输的最大字节数.Integer.MAX_VALUE最多传输2^31字节,Long.MAX_VALUE最多允许2^63字节(大于现有的任何文件).

Java相关问答推荐

使用json参数通过单击jSP文件中的按钮来运行server时出现问题

伪类focus-in不适用于PFA中的选项卡

在Java 8之后,HashMap的最坏情况下时间复杂度仍然是O(n)而不是O(log n)?

无法找到符号错误—Java—封装

如何打印本系列的第n项y=-(1)-(1+2)+(1+2+3)+(1+2+3+4)-(1+2+3+4+5)...Java中的(1+2+3+4...+n)

如何找到MongoDB文档并进行本地化?

Mapstruct不能正确/完全映射属性

有没有更快的方法在N个容器中删除重复项?

为什么Collectors.toList()不能保证易变性

二进制数据的未知编码/序列化

在Oracle db中,当我们提供字符串而不是数字时,比较是如何工作的?

JavaFX:无论何时显示应用程序,如何更改组件/ node 位置?

嘲笑黄瓜中的对象

为什么我不能建立输入/输出流?Java ServerSocket

如何在Maven Central上部署?

无法使用Open WebStart Java 8运行jnlp

org.springframework.web.HttpRequestMethodNotSupportedException:请求方法';帖子';不支持

如何正确使用java.time类?

这是JavaFX SceneBuilder的错误吗?

";重复键的值提示唯一约束«;livre_genre_pkey»";例外