黑马程序员技术交流社区
标题:
关于zip压缩,大家帮我看看什么地方错了
[打印本页]
作者:
贾存双
时间:
2012-7-19 00:13
标题:
关于zip压缩,大家帮我看看什么地方错了
import java.io.* ;
import java.util.* ;
import java.util.zip.* ;
public class Demo1{
public static void main(String args[])throws Exception{
File file = new File("e:" + File.separator) ;
File zipFile = new File("e:" + File.separator + "test.zip") ;
InputStream input = null ;
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.setComment("hello world") ;
fun(zipOut,file) ;
input.close() ;
zipOut.close() ;
}
public static void fun(ZipOutputStream zipOut,File file){
if(file.isDirectory()){
File f[] = file.listFiles() ;
for(int i=0;i<f.length;i++){
if(f[i].isDirectory()){
fun(zipOut,f[i]) ;
}else{
try{
zipOut.putNextEntry(new ZipEntry(f[i].getName())) ;
}catch(Exception e){
e.printStackTrace() ;
}
}
}
}else{
try{
zipOut.putNextEntry(new ZipEntry(file.getName())) ;
}catch(Exception e){
e.printStackTrace() ;
}
}
}
}
压缩出来的是一个错误的压缩包。怎么回事。
作者:
温少邦
时间:
2012-7-19 08:22
新建了ZipEntry后,要往里面写入数据嘛
把这一段:
zipOut.putNextEntry(new ZipEntry(f[i].getName())) ;
复制代码
改成如下代码:
zipOut.putNextEntry(new ZipEntry(f[i].getName()));
FileInputStream fis=new FileInputStream(f[i]);
byte[] buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1){
zipOut.write(buf,0,len);
}
zipOut.closeEntry();
复制代码
还有个小问题:
既然要递归压缩目录下的所有文件,
ZipOutputStream应该在里面创建,
每个文件压缩后应该放到不同的压缩文件里
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2