当前位置: 技术问答>java相关
请教:关于java中的压缩处理
来源: 互联网 发布时间:2015-06-06
本文导语: 各位大虾,小弟现在在java中压缩文件时遇到如下问题: 当我使用GZIPOutputStream时,生成.gz文件没问题,但里面的文件没有后缀,怎么解决呢?? 当我使用ZipOutputStream时,生成.zip文件没问题,但解开时,包含了我在压...
各位大虾,小弟现在在java中压缩文件时遇到如下问题:
当我使用GZIPOutputStream时,生成.gz文件没问题,但里面的文件没有后缀,怎么解决呢??
当我使用ZipOutputStream时,生成.zip文件没问题,但解开时,包含了我在压缩时提供的全路径,造成了压缩文件反而比原文件更大,怎么解决??
还有,这两个类都是压缩的类,后者可以压缩多个文件,但对于仅仅压缩一个文件的情况下,选择哪个更好呢??
请不吝赐教,谢谢!!
当我使用GZIPOutputStream时,生成.gz文件没问题,但里面的文件没有后缀,怎么解决呢??
当我使用ZipOutputStream时,生成.zip文件没问题,但解开时,包含了我在压缩时提供的全路径,造成了压缩文件反而比原文件更大,怎么解决??
还有,这两个类都是压缩的类,后者可以压缩多个文件,但对于仅仅压缩一个文件的情况下,选择哪个更好呢??
请不吝赐教,谢谢!!
|
import java.io.*;
import java.util.zip.*;
class Zip {
public static void main(String args[]) throws IOException {
byte b[] = new byte[512];
ZipOutputStream zout = new ZipOutputStream(System.out);
for(int i = 0; i 0) {
long csize = e.getCompressedSize();
long ratio = ((size-csize)*100) / size;
err.println(" (deflated " + ratio + "%)");
}
else {
err.println(" (deflated 0%)");
}
}
else {
err.println(" (stored 0%)");
}
}
}
import java.util.zip.*;
class Zip {
public static void main(String args[]) throws IOException {
byte b[] = new byte[512];
ZipOutputStream zout = new ZipOutputStream(System.out);
for(int i = 0; i 0) {
long csize = e.getCompressedSize();
long ratio = ((size-csize)*100) / size;
err.println(" (deflated " + ratio + "%)");
}
else {
err.println(" (deflated 0%)");
}
}
else {
err.println(" (stored 0%)");
}
}
}
|
解开时,包含了压缩时提供的全路径,这是因为你在构造ZipEntry时用的是全路经。
压缩文件反而比原文件更大是不可能的。打开zip文件,一个文件的原始大小是ZipEntry.getSize();压缩后的大小是ZipEntry.getComproessedSize().
压缩文件反而比原文件更大是不可能的。打开zip文件,一个文件的原始大小是ZipEntry.getSize();压缩后的大小是ZipEntry.getComproessedSize().
|
把你的代码放上来,ZIP的,gz文件在PC上不流行