在一本书中看过一个压缩文件的代码,但是这个例子只针对文件夹中不存在子文件夹。如果文件夹存在子文件夹,或者更复杂一些,文件夹结构未知。该怎么处理?自己试了试,发现解决不了。问题出现在这里面涉及函数的递归调用,另外zipEntry里,文件夹怎么处理的问题。在这里请教各位,万分感谢!
贴出自己的代码,请老师指导!
import java.io.*;
import java.util.zip.*;
public class zipFolder {
public static void zip(File f) throws IOException{
File zf=new File("d:"+File.separator+"ziptest.zip");
InputStream in=new FileInputStream(f);
ZipOutputStream zipout=new ZipOutputStream(new FileOutputStream(zf));
zipout.putNextEntry(new ZipEntry(f.getPath()));
int temp=0;
while((temp=in.read())!=-1){
zipout.write(temp);
}
in.close();
zipout.close();
}
public static void zipDir(File f) throws IOException{ //函数递归调用
if(f!=null){
if(f.isDirectory()){
File list[]=f.listFiles();
if(list!=null){
for(int i=0;i<list.length;i++){
zipDir(list);
}
}
}
else{
zip(f);
}
}
}
public static void main(String args[]) throws IOException{
File f=new File("d:"+File.separator+"ziptest");
zipDir(f);
}
}
|