我正在編寫一個Java代碼,使用http協議在網站上下載大量的zip文件,每個文件大小約爲1MB(1024KB)。使用java下載現場文件的最快方法
我知道有很多方法可以做到這一點。我只是漫遊這是最快的,我想知道每個下載的進度,如顯示百分比數字或其他東西。
我只是給我的代碼版本,關於如何改進它的任何想法?
謝謝所有。
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();
}
在http://codereview.stackexchange.com/上提出這種問題類型 – rahulserver
除非您有一個專用的1 Gb鏈接到互聯網,否則在代碼中如何做並不重要。即瓶頸不是您的代碼。您可以做出的主要改進是確保您使用的所有帶寬均超過您公平分配的帶寬。我會考慮使用至少1.5 KB的緩衝區,因爲這是數據包大小。例如嘗試2 KB –
謝謝,知道了~~ – xuqin1019