@Override public int read() throws IOException { if (uncompressedChunkOffset >= uncompressedChunkLength) { readNextChunk(uncompressedChunk, 0, uncompressedChunk.length); if (uncompressedChunkLength == 0) { return -1; } } return uncompressedChunk[uncompressedChunkOffset++] & 0xFF; }
@Override public int read() throws IOException { if (uncompressedChunkOffset >= uncompressedChunkLength) { readNextChunk(uncompressedChunk, 0, uncompressedChunk.length); if (uncompressedChunkLength == 0) { return -1; } } return uncompressedChunk[uncompressedChunkOffset++] & 0xFF; }
@Override public int read(byte[] output, int offset, int length) throws IOException { if (uncompressedChunkOffset >= uncompressedChunkLength) { boolean directDecompress = readNextChunk(output, offset, length); if (uncompressedChunkLength == 0) { return -1; } if (directDecompress) { uncompressedChunkOffset += uncompressedChunkLength; return uncompressedChunkLength; } } int size = Math.min(length, uncompressedChunkLength - uncompressedChunkOffset); System.arraycopy(uncompressedChunk, uncompressedChunkOffset, output, offset, size); uncompressedChunkOffset += size; return size; }
@Override public int read(byte[] output, int offset, int length) throws IOException { if (uncompressedChunkOffset >= uncompressedChunkLength) { boolean directDecompress = readNextChunk(output, offset, length); if (uncompressedChunkLength == 0) { return -1; } if (directDecompress) { uncompressedChunkOffset += uncompressedChunkLength; return uncompressedChunkLength; } } int size = Math.min(length, uncompressedChunkLength - uncompressedChunkOffset); System.arraycopy(uncompressedChunk, uncompressedChunkOffset, output, offset, size); uncompressedChunkOffset += size; return size; }