您的位置:首页 > 其它

把一个文件夹下的文件先打包成一个tar文件,然后再用gzip压缩。

2011-08-01 20:56 471 查看
/**

* 压缩文件成Gzip格式,Linux上可使用

* 压缩文件夹生成后缀名为".gz"的文件并下载

* @param folderPath,要压缩的文件夹的路径

* @param zipFilePath,压缩后文件的路径

* @param zipFileName,压缩后文件的名称

* @throws BizException

* */

public static void CompressedFiles_Gzip(String folderPath, String targzipFilePath, String targzipFileName)

{

File srcPath =new File(folderPath);

int length=srcPath.listFiles().length;

byte[] buf = new byte[1024]; //设定读入缓冲区尺寸

File[] files = srcPath.listFiles();

try

{

//建立压缩文件输出流

FileOutputStream fout=new FileOutputStream(targzipFilePath);

//建立tar压缩输出流

TarOutputStream tout=new TarOutputStream(fout);

for(int i=0;i<length;i++)

{

String filename=srcPath.getPath()+File.separator+files[i].getName();

//打开需压缩文件作为文件输入流

FileInputStream fin=new FileInputStream(filename); //filename是文件全路径

TarEntry tarEn=new TarEntry(files[i]); //此处必须使用new TarEntry(File file);

tarEn.setName(files[i].getName()); //此处需重置名称,默认是带全路径的,否则打包后会带全路径

tout.putNextEntry(tarEn);

int num;

while ((num=fin.read(buf)) != -1)

{

tout.write(buf,0,num);

}

tout.closeEntry();

fin.close();

}

tout.close();

fout.close();

//建立压缩文件输出流

FileOutputStream gzFile=new FileOutputStream(targzipFilePath+".gz");

//建立gzip压缩输出流

GZIPOutputStream gzout=new GZIPOutputStream(gzFile);

//打开需压缩文件作为文件输入流

FileInputStream tarin=new FileInputStream(targzipFilePath); //targzipFilePath是文件全路径

int len;

while ((len=tarin.read(buf)) != -1)

{

gzout.write(buf,0,len);

}

gzout.close();

gzFile.close();

tarin.close();

}catch(FileNotFoundException e)

{

System.out.println(e);

}catch(IOException e)

{

System.out.println(e);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐