java压缩解压文件

Gzip文件压缩与解压
本文介绍了一个Java实用类GzipUtil,用于处理文件的Gzip压缩与解压缩操作。该类提供了两个主要方法:GzipFile用于将指定文件压缩为.gz格式,unGzipFile则用于解压.gz文件。通过使用FileInputStream、FileOutputStream、GZIPOutputStream和GZIPInputStream,实现了对文件的有效读取和写入。

public class GzipUtil {
/**
* 解压gz文件
* @param inFileName
* @throws IOException
*/

public static String unGzipFile(String sourcedir) {
    String ouputfile = "";
    try {  
        //建立gzip压缩文件输入流 
        FileInputStream fin = new FileInputStream(sourcedir);   
        //建立gzip解压工作流
        GZIPInputStream gzin = new GZIPInputStream(fin);   
        //建立解压文件输出流  
        ouputfile = sourcedir.substring(0,sourcedir.lastIndexOf('.'));
        FileOutputStream fout = new FileOutputStream(ouputfile);   
        
        int num;
        byte[] buf=new byte[1024];
        while ((num = gzin.read(buf,0,buf.length)) != -1)
        {   
            fout.write(buf,0,num);   
        }

        gzin.close();   
        fout.close();   
        fin.close();   
    } catch (Exception ex){  
        System.err.println(ex.toString());  
    }  
    return ouputfile;
}
/**
 * 将文件压缩成gz根式
 * @param inFileName
 * @throws IOException
 */
public static String GzipFile(String inFileName) {  
    String outFileName = inFileName + ".gz";  
    FileInputStream in = null;  
    try {  
        in = new FileInputStream(new File(inFileName));  
    }catch (FileNotFoundException e) {  
        System.out.println("Could not find the inFile..."+inFileName);             
    }  
      
    GZIPOutputStream out = null;  
    try {  
        out = new GZIPOutputStream(new FileOutputStream(outFileName));  
    }catch (IOException e) {  
        System.out.println("Could not find the outFile..."+outFileName);  
          
    }  
    byte[] buf = new byte[10240];  
    int len = 0;  
    try {                                 
        while (((in.available()>10240)&& (in.read(buf)) > 0)) {    
            out.write(buf);               
        }          
        len = in.available();              
        in.read(buf, 0, len);              
        out.write(buf, 0, len);                       
        in.close();  
        System.out.println("Completing the GZIP file..."+outFileName);  
        out.flush();  
        out.close();  
    }catch (IOException e) {  
    	e.printStackTrace();
    }  
    
    return outFileName;
} 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值