Note that there are some explanatory texts on larger screens.

plurals
  1. POJava http download corrupts file
    text
    copied!<p>I have a problem, which I do not seem to be able to solve... I do a http download of a file, but the CRC32 of the file on the server and on the client do not match. Also, the file has different size, so obviously I must be doing something wrong... when I download via Firefox, the filesize is ok... so I guess it is somewhere in the client code.</p> <p>I already found <a href="https://stackoverflow.com/questions/401748/corrupt-file-when-using-java-to-download-file">Corrupt file when using Java to download file</a>, but that didn't help me either...</p> <p>Here's the code:</p> <pre><code>private void downloadJar(String fileName, long crc32Server) throws IOException { System.out.println("Downloading file '" + fileName + "' from server '" + mServer + "'."); HttpURLConnection sourceConnection = null; BufferedInputStream inputStream = null; BufferedWriter fileWriter = null; long crc32Client; try { URL sourceURL = new URL(fileName); try { sourceConnection = (HttpURLConnection)sourceURL.openConnection(); } catch (MalformedURLException exc) { throw new RuntimeException("Configured URL caused a MalformedURLException: ", exc); } sourceConnection.setRequestProperty("Accept-Encoding", "zip, jar"); sourceConnection.connect(); inputStream = new BufferedInputStream(sourceConnection.getInputStream()); fileWriter = new BufferedWriter(new FileWriter(targetFolder + File.separator + fileName)); CRC32 crc32 = new CRC32(); for (int singleByte = inputStream.read(); singleByte != -1; singleByte = inputStream.read()) { fileWriter.write(singleByte); crc32.update(singleByte); } crc32Client = crc32.getValue(); } finally { if (inputStream != null) { inputStream.close(); } if (fileWriter != null) { fileWriter.flush(); fileWriter.close(); } if (sourceConnection != null) { sourceConnection.disconnect(); } } if (crc32Client != crc32Server) { // deleteFile(fileName); throw new IOException("CRC32 did not match for file '" + fileName + "': " + crc32Client + "!=" + crc32Server); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload