我Debug了查了很久··但是还是查不出所以然啦,可能是方法不对什么,请大侠帮帮忙
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipException;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;public class ZipOutputStreamTest2 {
static ZipOutputStream zip = null;
static InputStream in = null; public static void main(String[] args) throws Exception {
File Zfile = new File("D:" + File.separator + "javaTest"
+ File.separator + "ZipOutputStream2.zip");
File Ofile = new File("D:" + File.separator + "javaTest"
+ File.separator + "day");
zip = new ZipOutputStream(new ZipOutputStream(new FileOutputStream(
Zfile)));
ZipEntry firstEntry = new ZipEntry(Ofile.getName());
FileZip(Ofile,firstEntry);
in.close();
zip.close(); } // 如果文件夹里面还有文件夹,则要采用递归的方法压缩
public static void FileZip(File InputFile,ZipEntry oldEntry) throws Exception {
File InputFileCOPY = InputFile;
ZipEntry oldEntryCOPY = oldEntry;
int temp = 0;
if (InputFileCOPY.isDirectory()) {
File[] list = InputFileCOPY.listFiles();
for (int i = 0; i < list.length; i++) {
if (list[i].isDirectory()) {
ZipEntry newEntry = new ZipEntry(oldEntryCOPY.getName()+File.separator+list[i].getName());
FileZip(list[i],newEntry);
} else {
in = new FileInputStream(list[i]);
ZipEntry ze = new ZipEntry(oldEntryCOPY .getName()
+ File.separator + list[i].getName());
zip.putNextEntry(ze);
while ((temp = in.read()) != -1) {
zip.write(temp);
}
} }
} }}

解决方案 »

  1.   

    public class FieToZip {
     static final int BUFFER = 2048;
     static boolean flag = false;
     public static File ZipSubdirectory(File myDir) throws IOException {
      BufferedInputStream origin = null;
      File zipFile = new File("c://"+myDir.getName() + ".zip");
      ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
      File dirContents[] = myDir.listFiles();
      File tempFile = null;
      try {
       for (int i = 0; i < dirContents.length; i++) {
        if (dirContents[i].isDirectory()) {
         tempFile = ZipSubdirectory(dirContents[i]);
         flag = true;
        } else {
         tempFile = dirContents[i];
         flag = false;
        }
        FileInputStream fis = new FileInputStream(tempFile);
        origin = new BufferedInputStream(fis, BUFFER);
        ZipEntry entry = new org.apache.tools.zip.ZipEntry(tempFile
          .getName());
        byte data[] = new byte[BUFFER];
        int count;
        out.putNextEntry(entry);
        while ((count = origin.read(data, 0, BUFFER)) != -1) {
         out.write(data, 0, count);
        }
        out.closeEntry();
        origin.close();
        if (flag == true) {
         flag = tempFile.delete();
        }
       }
      } catch (Exception e) {
       System.out.println(e);
      }
      out.close();
      return zipFile;
     }}
      

  2.   

    丫的,这个错误真难找。zip = new ZipOutputStream(new ZipOutputStream(new FileOutputStream(
    Zfile)));zip = new ZipOutputStream(new FileOutputStream(Zfile));