java 压缩和解压

package CompressionApp;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;
import org.apache.hadoop.io.compress.CompressionInputStream;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;

import java.io.*;

public class compressApp {
public static void main(String[] args) throws Exception{
//压缩
compression("data/access.log","org.apache.hadoop.io.compress.BZip2Codec");
//解压
decompression("data/access.log.bz2") ;
}

public static void compression(String path,String method) throws IOException, ClassNotFoundException {
    FileInputStream path1 = new FileInputStream(new File(path));
    Class<?> aClass = Class.forName(method) ;
    CompressionCodec code = (CompressionCodec) ReflectionUtils.newInstance(aClass, new Configuration());
    FileOutputStream fos = new FileOutputStream(new File(path + code.getDefaultExtension()));
    CompressionOutputStream outputStream = code.createOutputStream(fos);
    IOUtils.copyBytes(path1,outputStream,1024);
    path1.close();
    outputStream.close();
    fos.close();

}

public static void decompression(String path) throws IOException {
    CompressionCodecFactory Factory = new CompressionCodecFactory(new Configuration());
    CompressionCodec codec = Factory.getCodec(new Path(path));
    if(codec == null){
        System.out.println("没有对应的压缩格式");
        return;
    }
    CompressionInputStream inputStream = codec.createInputStream(new FileInputStream(new File(path)));
    FileOutputStream fileOutputStream = new FileOutputStream(new File(path + "jieya"));
     IOUtils.copyBytes(inputStream,fileOutputStream,1024,false);
    fileOutputStream.close();
     inputStream.close();

}

}

猜你喜欢

转载自blog.51cto.com/15084467/2645903
今日推荐