圧縮率(データが既に処理した他のデータと類似している場合の妥当な予想)を推測できる場合は、任意の大きなファイルのサイズを計算できます(エラーが発生します)。繰り返しますが、これは単一のgzipストリームを含むファイルを想定しています。以下は、(推定比率に基づいて)推定サイズの90%を超える最初のサイズが実際のサイズであると想定しています。
estCompRatio = 6.1;
RandomAccessFile raf = new RandomAccessFile(inputFilePath + ".gz", "r");
compLength = raf.length();
byte[] bytes = new byte[4];
raf.read(bytes);
uncLength = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getInt();
raf.seek(compLength - 4);
uncLength = raf.readInt();
while(uncLength < (compLength * estCompRatio * 0.9)){
uncLength += (1L << 32);
}
[estCompRatioを0に設定することは、@Alexanderの回答と同等です]