http://www.blogjava.net/soochow_hhb/
问题一:用java.util.zip类压缩文件的时候会把文件的路径一起压到压缩包里,请教大家如何只压文件而忽略路径?
问题二:压一些较大的文件时非常容易出错(java并不报错,生成的压缩包打不开),我怀疑是因为二进制文件的问题,我是参考《java编程思想》里的例程做的(代码见下),如果是二进制问题,请教大家如何压缩二进制文件。
先谢谢啦。
问题二的代码:
public void zipFiles(String[] fileName){
try{
FileOutputStream f = new FileOutputStream("c:\\cl.zip");
CheckedOutputStream csum = new CheckedOutputStream(f,new Adler32());
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(csum));
for(int i=0;i<fileName.length;i++){
BufferedReader in = new BufferedReader(new FileReader(fileName[i]));
out.putNextEntry(new ZipEntry(fileName[i]));
int c;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
}
out.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
问题一:用java.util.zip类压缩文件的时候会把文件的路径一起压到压缩包里,请教大家如何只压文件而忽略路径?
问题二:压一些较大的文件时非常容易出错(java并不报错,生成的压缩包打不开),我怀疑是因为二进制文件的问题,我是参考《java编程思想》里的例程做的(代码见下),如果是二进制问题,请教大家如何压缩二进制文件。
先谢谢啦。
问题二的代码:
public void zipFiles(String[] fileName){
try{
FileOutputStream f = new FileOutputStream("c:\\cl.zip");
CheckedOutputStream csum = new CheckedOutputStream(f,new Adler32());
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(csum));
for(int i=0;i<fileName.length;i++){
BufferedReader in = new BufferedReader(new FileReader(fileName[i]));
out.putNextEntry(new ZipEntry(fileName[i]));
int c;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
}
out.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
问题点数:100、回复次数:7