gpt4 book ai didi

java - 使用java在站点上下载文件的最快方法

转载 作者:行者123 更新时间:2023-11-30 11:29:53 24 4
gpt4 key购买 nike

我正在编写一个 Java 代码,使用 http 协议(protocol)在站点上下载大量 zip 文件,每个文件大约 1MB(1024KB) 大小。

我知道有很多方法可以做到这一点。我只是在徘徊哪个最快,我想知道每次下载的进度,比如显示百分比数字或其他内容。

我只是给出我的代码版本,关于如何改进它有什么想法吗?

谢谢大家

 public static void downloadFile(String downloadUrl , String fileName) throws Exception {
URL url=new URL(downloadUrl);
URLConnection connection = url.openConnection();
int filesize = connection.getContentLength();
float totalDataRead=0;
java.io.BufferedInputStream in = new java.io.BufferedInputStream(connection.getInputStream());
java.io.FileOutputStream fos = new java.io.FileOutputStream(fileName);
java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
byte[] data = new byte[1024];
int i=0;
while((i=in.read(data,0,1024))>=0) {
totalDataRead=totalDataRead+i;
bout.write(data,0,i);
float Percent=(totalDataRead*100)/filesize;
System.out.println((int)Percent);
}
bout.close();
in.close();
}

最佳答案

您过早地进行了优化。网络带宽瓶颈可能会远远超过您正在进行的任何处理。

您不需要将 InputStream 包装在 BufferedInputStream 中。您可能希望支持更大的读取缓冲区大小,但这可能影响很小,具体取决于连接返回的 InputStream 的底层实现、内核级缓冲等。

对于进度条,将您目前阅读的内容除以 connection.getContentLength(),但请注意,如果长度未知,getContentLength() 可能会返回 -1(它只是为您提供内容长度 header )。在您读取数据时,将进度信息传递给您选择执行的任何操作以将其显示给用户。

关于java - 使用java在站点上下载文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18075687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com