Java-IO之DeflaterOutputStream和InflaterOutputStream

此类为使用 “deflate” 压缩格式压缩数据实现输出流过滤器

example


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterOutputStream;

public class DeflaterOutputStreamIO {
    private static String inPath = "D:\\a.bat";
    private static String outPath = "D:\\b.bat";

    public static void main(String[] args) throws Exception {
        // 压缩文件
         deflater(inPath,outPath);
        // 解压文件
        Inflater(outPath, "D:\\c.bat");

    }

    /**
     * 
     * @param outPath2
     *            压缩后的文件
     * @param str
     *            解压后的文件
     * @throws Exception
     */
    private static void Inflater(String outPath2, String str) throws Exception {
        FileInputStream fis = new FileInputStream(new File(outPath));
        FileOutputStream fos = new FileOutputStream(new File(str));
        InflaterOutputStream ios = new InflaterOutputStream(fos, new Inflater(true));

        byte[] b = new byte[1024];
        int len = 0;
        while ((len = fis.read(b)) != -1) {
            ios.write(b, 0, len);
        }
        fis.close();
        ios.close();
    }

    /**
     * 
     * @param inPath
     *            原文件
     * @param outPath
     *            压缩后的文件
     * @throws Exception
     */
    public static void deflater(String inPath, String outPath) throws Exception {
        FileInputStream fis = new FileInputStream(new File(inPath));
        FileOutputStream fos = new FileOutputStream(new File(outPath));
        DeflaterOutputStream dos = new DeflaterOutputStream(fos,
                new Deflater(9,true));

        byte[] b = new byte[1024];
        int len = 0;
        while ((len = fis.read(b)) != -1) {
            dos.write(b, 0, len);
        }
        fis.close();
        dos.close();
    }
}
posted @ 2016-12-13 12:56  kabibo  阅读(3184)  评论(0编辑  收藏  举报