关于zip,tar压缩

最近有个项目需要用压缩算法,懒得自己写算法了,直接就用了java自带的类库
zip的压缩如下

public void saveFileZip(String srcname,String destname)
{
try {
BufferedInputStream origin = null;
FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");
ZipOutputStream out = new ZipOutputStream(dest);
byte data[] = new byte[BUFFER];
File f = new File("e:\\test\\a\\");
File files[] = f.listFiles();
for (int i = 0; i < files.length; i++) {
FileInputStream fi = new FileInputStream(files[i]);
origin = new BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i].getName());
System.out.println(entry.getName());
out.putNextEntry(entry);
int count;
while ((count = origin.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
origin.close();
}
out.close();
} catch (Exception e) {
e.printStackTrace();
}

}

由于zip是无损压缩,所以压缩的效率不是很高,需要高效的可以尝试下其他的压缩算法,如果是跟c连调的话建议还是自己写,因为同一种压缩格式在c跟java中有些地方是不一样的,不能通用。
还有一种压缩方式tar的

public void saveFileTar() throws Exception
{
File desFile = new File("E:\\test","test.tar"); //.tar or .tar.gz
File srcFile2 = new File("e:\\test\\a\\Mercury+LoadRunner教程8.1版.pdf");

FileOutputStream fileoutPutStream = new FileOutputStream(desFile);
/*
要壓.tar.gz在加一層GZIPOutputStream,TarArchive的constructor要改用GZIPOutputStream
*/
// GZIPOutputStream gzOutput = new GZIPOutputStream(fileoutPutStream);

TarEntry tarEntry = new TarEntry(srcFile2);
TarArchive desTarFile = new TarArchive(fileoutPutStream);
desTarFile.writeEntry(tarEntry,true);
desTarFile.closeArchive();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值