java.util.jar 包
java.util.zip 包

解决方案 »

  1.   

    是的,我也在用,但是设计到一个问题,请看我的代码:FileOutputStream f = new FileOutputStream("c:/test.zip");
    ZipOutputStream out = new ZipOutputStream (f);

    out.putNextEntry(new ZipEntry("1.dbf"));
    //可以写内容
    out.closeEntry();
    out.putNextEntry(new ZipEntry("2.dbf"));
    out.closeEntry();
    out.putNextEntry(new ZipEntry("3.dbf"));
    out.closeEntry();
    out.finish();
    情况是这样的,在我的硬盘某个目录下面有三个dbf文件,我想将他们压缩为一个
    .zip文件,我不知道应该如何修改这段代码。
    请大虾指点,谢谢。
      

  2.   

    我的一段代码,能用的,不过要提醒你,最好先将要压缩的文件目录组织好,否则压缩包里的路径会很长:  public void zipper() throws Exception {
        File zippedfile = new File("c:/abc.zip");
        FileOutputStream fos=new FileOutputStream(zippedfile);
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        ZipOutputStream zipoutputstream = new ZipOutputStream(bos);
        FileInputStream fileinputstream;
        BufferedInputStream bufferedinputstream;
        File file;
        for(int i=0;i<MAX_FILE_ALLOW;i++) {
          if(this.aList[i]=="") //file name array
            break;
          file=new File(this.aList[i]);
          fileinputstream = new FileInputStream(file);
          bufferedinputstream = new BufferedInputStream(fileinputstream);
          ZipEntry zipentry = new ZipEntry(file.toString());
          //ZipEntry zipentry = new ZipEntry(file.getName());
          //ZipEntry zipentry = new ZipEntry("aaa");
          zipentry.setMethod(ZipEntry.DEFLATED);
          zipoutputstream.putNextEntry(zipentry);
          byte b[] = new byte[512];
          int len;
          while((len=bufferedinputstream.read(b)) != -1){
            zipoutputstream.write(b,0,len);
          }
          zipoutputstream.flush();
        }
        zipoutputstream.closeEntry();
        zipoutputstream.close();
      }