我有5个文件,我要把这5个文件打成一个ZIP的文件。要求解压缩后还是5个文件!!!我写了一个程序,只能对一个文件操作,两个以上就有问题。跪求解决方案,在线等!!!!

解决方案 »

  1.   

    package com.orbis.oams.util;/**
     * 压缩和解压缩文件
     * Mao Hangjun
     */
    import java.util.*;
    import java.util.zip.*;
    import java.io.*;public class Zip {
      public Zip(){}  /**
       * 压缩目录下的文件
       * @param zipFileName
       * @param inputFile 目录
       * @throws java.lang.Exception
       */
      public void zip(String zipFileName, String inputFile) throws IOException {
        zip(zipFileName, new File(inputFile));
      }  /**
       * 压缩文件
       * @param zipFileName
       * @param inputFile 文件
       * @throws java.lang.Exception
       */
      public void zip(String zipFileName, File inputFile) throws IOException {
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
        zip(out, inputFile, "");
        System.out.println("压缩成功!");
        out.close();
      }  public void zip(ZipOutputStream out, File f, String base) throws IOException {
        System.out.println("正在压缩  " + f.getName());
        if (f.isDirectory()) {
          File[] fl = f.listFiles();
          out.putNextEntry(new ZipEntry(base + "/"));
          base = base.length() == 0 ? "" : base + "/";
          for (int i = 0; i < fl.length; i++) {
            zip(out, fl[i], base + fl[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();
        }  }  /**
       * 解压缩
       * @param zipFileName
       * @param outputDirectory 输出目录
       * @throws java.lang.Exception
       */
      public void unzip(String zipFileName, String outputDirectory) throws
          IOException {
        ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
        ZipEntry z;
        while ( (z = in.getNextEntry()) != null) {
          System.out.println("正在解压 " + z.getName());
          if (z.isDirectory()) {
            String name = z.getName();
            name = name.substring(0, name.length() - 1);
            File f = new File(outputDirectory + File.separator + name);
            f.mkdir();
            System.out.println("创建目录 " + outputDirectory + File.separator + name);
          }
          else {
            File f = new File(outputDirectory + File.separator + z.getName());
            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 {
          Zip t = new Zip();
    //      t.zip("D:\\IdeaProjects.zip", "D:\\IdeaProjects");
    //      t.unzip("d:\\ddd\\api.jar", "d:\\ddd\\");
        }
        catch (Exception e) {
          e.printStackTrace(System.out);
        }
      }
    }