文件表里面有上次附件, 现在要做一个功能,就是把这些所以文件直接打成zip压缩包下载下来,并且里面还要有一级文件夹, 就是 压缩包里面是几个文件夹,文件夹下面放的是各自的文件。 求高手!最好附上代码 注释。 先谢谢了

解决方案 »

  1.   

    java Zip压缩文件:
    import java.util.*;
    import java.util.zip.*;
    import java.io.*;
    class TestZip
    {
     //压缩
     public static void zip(String zipFileName , String inputFile)throws Exception
     {
      File f = new File(inputFile);
      ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
      zip(out,f,null);
      System.out.println("zip done");
      out.close();
     }
     
     private static void zip(ZipOutputStream out,File f,String base)throws Exception
     {
      System.out.println("zipping " + f.getAbsolutePath());
      if (f.isDirectory()) {
       File[] fc =f.listFiles();
       if(base!=null)
          out.putNextEntry(new ZipEntry(base+"/"));
       base=base==null?"":base+"/";
       for (int i=0;i<fc.length ;i++ ) {
        zip(out,fc[i],base+fc[i].getName());
       }
      }
      else {
       out.putNextEntry(new ZipEntry(base));
       FileInputStream in=new FileInputStream(f);
       int b;
       while ((b=in.read()) != -1)
        out.write(b);
       in.close();
      }
     }
     
     //解压
     public static void unzip(String zipFileName,String outputDirectory)throws Exception
     {
      ZipInputStream in=new ZipInputStream(new FileInputStream(zipFileName));
      ZipEntry z;
      while ((z=in.getNextEntry() )!= null)
      {
       String name = z.getName();
       if (z.isDirectory()) {
        name=name.substring(0,name.length()-1);
        File f=new File(outputDirectory+File.separator+name);
        f.mkdir();
        System.out.println("MD "+outputDirectory+File.separator+name);
       }
       else {
        System.out.println("unziping "+z.getName());
        File f=new File(outputDirectory+File.separator+name);
        f.createNewFile();
        FileOutputStream out=new FileOutputStream(f);
        int b;
        while ((b=in.read()) != -1)
        out.write(b);
        out.close();
       }
      }
      in.close();
     }
     public static void main(String[] args)
     {
      try{
       TestZip t=new TestZip();
     //  t.zip("c:\\test.zip","c:\\test");
    //   t.unzip("c:\\test.zip","c:\\test2");
      }catch(Exception e){
       e.printStackTrace(System.out);
      }
     }
    } 仅供参考。
      

  2.   

    自己查API研究研究不就可以了,这样学的更深刻