0
我正在從服務器上下載一個zip文件,但不斷收到損壞的文件。我的連接速度很慢,並且我知道服務器會經常更新文件。這是爲什麼我得到損壞的文件?我會假設網絡協議應該足夠聰明以避免這種情況。在服務器上修改正在下載的文件時會發生什麼情況?
private void downloadFile(String urlString, String fileName)
throws MalformedURLException, IOException {
InputStream input = new URL(urlString).openConnection().getInputStream();
FileOutputStream output = new FileOutputStream(fileName);
int bufferSize = 153600;
byte[] buffer = new byte[bufferSize];
int totalBytesRead = 0;
int bytesRead = 0;
while ((bytesRead = input.read(buffer)) > 0) {
output.write(buffer, 0, bytesRead);
buffer = new byte[bufferSize];
totalBytesRead += bytesRead;
}
output.close();
input.close();
}
謝謝!
網絡協議與通過它發送的數據無關。這取決於服務器的實現。 – SLaks 2012-02-10 23:44:59
這與「網絡協議」無關。我懷疑服務器是修改* .zip文件,而不是僅僅創建一個具有相同名稱的新文件(這不會影響當前打開的文件句柄)。如果後者不正確...是的,那麼,不要這樣做。 – 2012-02-10 23:46:53
循環中的'new byte []'應該被刪除。您可以使用像'org.apache.commons.io.StreamUtils.pipe(輸入,輸出)'這樣經過驗證的庫。 – 2012-02-11 00:08:56