测试代码:
public boolean inputZip(String inFileName,String outFileName)throws Exception{
File file = new File(inFileName);
if(!file.exists()){
System.out.println ("file is not exists");
return false;
}

FileOutputStream fos = new FileOutputStream(outFileName+".zip");
BufferedOutputStream bos = new BufferedOutputStream(fos,512);
ZipOutputStream zos = new ZipOutputStream(bos);

if(file.isFile()){
this.isFileToZip(file,zos);
}else if(file.isDirectory()){
this.isDirectoryToZip(file,zos);
}


zos.close();
bos.close();
fos.close();

zos = null;
bos = null;
fos = null;

return true;
}
public void isFileToZip(File file,ZipOutputStream zos)throws Exception{
ZipEntry ze = new ZipEntry(file.getPath());
zos.putNextEntry(ze);

FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis,512);
byte b[] = new byte[512];
int len;

        while ((len=bis.read(b)) != -1){
         zos.write(b,0,len); 
        }
        
        bis.close();
fis.close();

bis = null;
fis = null;
}
public void isDirectoryToZip(File file,ZipOutputStream zos)throws Exception{
File listfile[] = file.listFiles();
for(int i=0;i<listfile.length;i++){
File lf = listfile[i];
if(lf.isFile()){
this.isFileToZip(lf,zos);
}else if(lf.isDirectory()){
this.isDirectoryToZip(lf,zos);
}
}
}
------------------------------------------------------------------
单个的文件如:a.txt
或者 多个文件夹和文件嵌套入:a/a.txt..........
但是无法压缩空的文件夹如:a往高手解决以下-------------------------

解决方案 »

  1.   

    isDirectoryToZip这个函数里面File listfile[] = file.listFiles();之后加上
    if(listfile.length==0){
        ZipEntry ze = new ZipEntry(file);
        zos.putNextEntry(ze);
        return;
    }试试
      

  2.   

    ZipOutputStream 如何创建文件夹?
      

  3.   

    putNextEntry啊,你自己都写出来了
      

  4.   

    public  void  isDirectoryToZip(File  file,ZipOutputStream  zos)throws  Exception{
    加入---------------------------------
    if(listfile.length==0){
         ZipEntry ze = new ZipEntry(file.getPath()+"\\");
         zos.putNextEntry(ze);
         return;
    }
    ---------------------------------------
    结果是有一点问题的...