你只需要按照你需要的Entry放就可以了,zip会自动创建目录的!请参考这个代码 http://www.java2000.net/viewthread.jsp?tid=94

解决方案 »

  1.   

    给lz贴段封装好的压缩文件代码:/**
    * zip压缩功能.
    * 将sourceDir目录下的所有文件连同子目录压缩到targetFileName.
    * @throws Exception
    */
    public static void createZip(String sourceDir, String targetFileName) throws Exception{
    //压缩baseDir下所有文件,包括子目录
    String baseDir=sourceDir;
    List fileList=getSubFiles(new File(baseDir));

    //压缩文件名
    ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(targetFileName));

    ZipEntry ze=null;
    byte[] buf=new byte[1024];
    int readLen=0;
    for (int i = 0; i <fileList.size(); i++) {
    File f=(File)fileList.get(i);
    //System.out.print("Adding: "+f.getPath()+f.getName());

    //创建一个ZipEntry,并设置Name和其它的一些属性
    ze=new ZipEntry(getAbsFileName(baseDir, f));
    ze.setSize(f.length());
    ze.setTime(f.lastModified());

    //将ZipEntry加到zos中,再写入实际的文件内容
    zos.putNextEntry(ze);
    InputStream is=new BufferedInputStream(new FileInputStream(f));
    while ((readLen=is.read(buf, 0, 1024))!=-1) {
    zos.write(buf, 0, readLen);
    }
    is.close();
    //System.out.println("   done...");
    }
    zos.close();
    }