@Override public void close() throws IOException { if (!closed) { while (skip(Long.MAX_VALUE) > 0) { // process CRC-32 until EOF } } super.close(); closed = true; final long expected = entry.getCrc(); final long computed = getChecksum().getValue(); if (expected != computed) throw new CRC32Exception(entry.getName(), expected, computed); } }