/*** 压缩文件成Gzip格式,Linux上可使用
* 压缩文件夹生成后缀名为".gz"的文件并下载
*@paramfolderPath,要压缩的文件夹的路径
*@paramzipFilePath,压缩后文件的路径
*@paramzipFileName,压缩后文件的名称
*@throwsBizException
**/
public static voidCompressedFiles_Gzip(String folderPath, String targzipFilePath, String targzipFileName)
{
File srcPath=newFile(folderPath);int length=srcPath.listFiles().length;byte[] buf = new byte[1024]; //设定读入缓冲区尺寸
File[] files =srcPath.listFiles();try{//建立压缩文件输出流
FileOutputStream fout=newFileOutputStream(targzipFilePath);//建立tar压缩输出流
TarArchiveOutputStream tout=newTarArchiveOutputStream(fout);for(int i=0;i
{
String filename=srcPath.getPath()+File.separator+files[i].getName();//打开需压缩文件作为文件输入流
FileInputStream fin=new FileInputStream(filename); //filename是文件全路径
TarArchiveEntry tarEn=new TarArchiveEntry(files[i]); //此处必须使用new TarEntry(File file);
tarEn.setName(files[i].getName()); //此处需重置名称,默认是带全路径的,否则打包后会带全路径
tout.putArchiveEntry(tarEn);intnum;while ((num=fin.read(buf, 0, 1024)) != -1)
{
tout.write(buf,0,num);
}
tout.closeArchiveEntry();
fin.close();
}
tout.close();
fout.close();//建立压缩文件输出流
FileOutputStream gzFile=new FileOutputStream(targzipFilePath+".gz");//建立gzip压缩输出流
GZIPOutputStream gzout=newGZIPOutputStream(gzFile);//打开需压缩文件作为文件输入流
FileInputStream tarin=new FileInputStream(targzipFilePath); //targzipFilePath是文件全路径
intlen;while ((len=tarin.read(buf, 0, 1024)) != -1)
{
gzout.write(buf,0,len);
}
gzout.close();
gzFile.close();
tarin.close();
File f= newFile(targzipFilePath);
f.deleteOnExit();
}catch(FileNotFoundException e)
{
System.out.println(e);
}catch(IOException e)
{
System.out.println(e);
}
}