最近有个项目需要用压缩算法,懒得自己写算法了,直接就用了java自带的类库
zip的压缩如下
由于zip是无损压缩,所以压缩的效率不是很高,需要高效的可以尝试下其他的压缩算法,如果是跟c连调的话建议还是自己写,因为同一种压缩格式在c跟java中有些地方是不一样的,不能通用。
还有一种压缩方式tar的
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();
}
1948

被折叠的 条评论
为什么被折叠?



