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());
}
}
}
}
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());
}
}
}
}