본문 바로가기

IT

안드로이드 압축하기 deflate, inflate

반응형
 자바의 압축기법중 하나인 Deflate, 해제기법인 Inflate를 이용한 압축, 해제 방법

압축하기
// 바이트어레이를 압축해서 내보냄
    public static byte[] compress(byte[] dataByte) throws IOException {
        Deflater deflater = new Deflater();
        deflater.setLevel(Deflater.BEST_COMPRESSION);
        deflater.setInput(dataByte);
        deflater.finish();

        ByteArrayOutputStream bao = new ByteArrayOutputStream(dataByte.length);
        byte[] buf = new byte[1024];

        while(!deflater.finished()) {
            int compByte = deflater.deflate(buf);
            bao.write(buf, 0, compByte);
        }

        bao.close();
        deflater.end();

        return bao.toByteArray();
    }

압축풀기
// 바이트어레이를 압축해제해서 내보냄
    public static byte[] decompress(byte[] data) throws IOException, DataFormatException {
        Inflater inflater = new Inflater();
        inflater.setInput(data);

        ByteArrayOutputStream bao = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];

        while(!inflater.finished()) {
            int compByte = inflater.inflate(buf);
            bao.write(buf, 0, compByte);
        }

        bao.close();
        inflater.end();

        return bao.toByteArray();
    }

반응형