import org.xerial.snappy.Snappy; import org.xerial.snappy.SnappyCodec; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; /** * Created with IntelliJ IDEA. * User: carsten * Date: 3/14/13 * Time: 2:22 PM * To change this template use File | Settings | File Templates. */ public class SnappyTestInChunked { public static void main(String[] args) throws Exception { int chunkSize = 512 * 1024; String s = "/Users/carsten/bla512k.meta.snappy"; File metaFile = new File(s); long start = System.currentTimeMillis(); FileInputStream metaFis = new FileInputStream(metaFile); DataInputStream metaDis = new DataInputStream(new BufferedInputStream(metaFis)); metaDis.readInt(); // skip meta length long chunks = metaFile.length() / 8; long toSkip = 32l * 1024l * 1024l * 1024l; long compressedToSkip = 0l; long currentUncompressed = 0l; for(int i = 0; i < 100000; i++) { int l = metaDis.readInt(); // System.out.println("meta l " + l); compressedToSkip += l + 4; // int len currentUncompressed += chunkSize; } currentUncompressed -= chunkSize; FileInputStream fis = new FileInputStream("/Users/carsten/bla512k.snappy"); // BufferedInputStream bis = new BufferedInputStream(fis); SnappyCodec.readHeader(fis); fis.skip(compressedToSkip); byte[] len = new byte[4]; fis.read(len); int i = ChunkSkipableSnappyInputStream.readInt(len, 0); System.out.println("i " + i); // ChunkSkipableSnappyInputStream sis = new ChunkSkipableSnappyInputStream(bis); // bis.skip(compressedToSkip); byte[] b = new byte[i]; fis.read(b); // fis.read(len); System.out.println(new String(Snappy.uncompress(b))); System.out.println("Time: " + (System.currentTimeMillis() - start)); metaDis.close(); // sis.close(); // bis.close(); fis.close(); } }