在服务器上修改正在下载的文件时会发生什么?

时间:2012-02-10 23:40:00

标签: java network-programming download network-protocols

我正在从服务器下载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();
}

谢谢!

1 个答案:

答案 0 :(得分:1)

这与协议无关,而且与您在网址另一端使用的服务器软件有关。您的代码只能读取服务器发送给您的内容。 服务器代码需要确保它在将文件流式传输给您时保持文件的写锁定,或者确保您收到(未修改的)文件的有效副本。