1
20 package org.crosswire.common.compress;
21
22 import java.io.BufferedInputStream;
23 import java.io.ByteArrayOutputStream;
24 import java.io.IOException;
25 import java.io.InputStream;
26
27 import org.apache.commons.compress.compressors.CompressorInputStream;
28 import org.apache.commons.compress.compressors.CompressorOutputStream;
29 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
30 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
31 import org.apache.commons.compress.utils.IOUtils;
32
33
39 public class BZip2 extends AbstractCompressor {
40
46 public BZip2(InputStream input) {
47 super(input);
48 }
49
50
53 public ByteArrayOutputStream compress() throws IOException {
54 BufferedInputStream in = new BufferedInputStream(input);
55 ByteArrayOutputStream bos = new ByteArrayOutputStream();
56 CompressorOutputStream out = new BZip2CompressorOutputStream(bos);
57 IOUtils.copy(in, out);
58 in.close();
59 out.flush();
60 out.close();
61 return bos;
62 }
63
64
67 public ByteArrayOutputStream uncompress() throws IOException {
68 return uncompress(BUF_SIZE);
69 }
70
71
74 public ByteArrayOutputStream uncompress(int expectedLength) throws IOException {
75 ByteArrayOutputStream out = new ByteArrayOutputStream(expectedLength);
76 CompressorInputStream in = new BZip2CompressorInputStream(input);
77 IOUtils.copy(in, out);
78 in.close();
79 out.flush();
80 out.close();
81 return out;
82 }
83
84 }
85