第一次写解压gz压缩文件,什么不对的地方或者待优化的地方劳烦指点指点,谢谢

package com.file.main;


import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.GZIPInputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 解压gz文件
 * @author 
 * 2017-08-19
 */
public class FileHealp {
//日志对象
private static Logger loggery=LoggerFactory.getLogger(FileHealp.class);
//私有化当前对象
private static FileHealp fileHealp=null;
//文件对象
private static File file=null;
//当天实时间
private static String time=new SimpleDateFormat("yyyy-MM-dd").format(new Date().getTime());
//输入流
private static FileInputStream fis=null;
//解压输入流
private static GZIPInputStream gzip=null;
//缓存输出流
private static BufferedOutputStream bos=null;
private FileHealp(){}

public static FileHealp getFileHealp(){
synchronized (FileHealp.class) {
if(fileHealp==null){
fileHealp=new FileHealp();
}
return fileHealp;
}
}

public static void main(String[] args) {
new FileHealp().readFile("路径");

}

public void readFile(String path){
try{
//创建文件对象
file=new File(path);
//判断是否存在子文件夹
if(file.isDirectory()){
//拿到子文件
File[] fi=file.listFiles();
//遍历子文件数组
for(File f:fi){
//递归调用
readFile(f.getPath());
//匹配当前压缩文件夹
if(f.getName().matches("^.*.gz$")){
//解压文件
decompression(f);
}
}
}
}catch(Exception e){
loggery.error(e.getMessage());
}

}

/**
* 解压文件
* @param file
*/
public static void decompression(File file){
byte[] by=new byte[1024];
try{
//写入
fis=new FileInputStream(file);
gzip=new GZIPInputStream(fis);
bos=new BufferedOutputStream(new FileOutputStream(new File(file.getParent()+"\\"+time+file.getName()+".txt")));
int num=-1;
while((num=gzip.read(by))!=-1){
bos.write(by,0,num);
}
}catch(Exception e){
loggery.error(e.getMessage());
}finally{
//关闭打开的流
try {
if(gzip!=null){gzip.close();}
if(fis!=null){fis.close();}
if(bos!=null){bos.close();}
} catch (IOException e) {
loggery.error(e.getMessage());
}
}
}

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值