import java.io.*;
import java.util.zip.*;public class GZIPcompress {
    public static void main(String[] args) {
        if (args[0] == null) {
            System.out.println("The filename doesn't exist");
            return;
        }        try {
            BufferedReader in = new BufferedReader(new FileReader(args[0]));
            BufferedOutputStream out = new BufferedOutputStream(new
                    GZIPOutputStream(new FileOutputStream("test.gz")));
            System.out.println("Writing file");
            int c;
            while ((c = in.read()) != -1)
                out.write(c);
            in.close();
            out.close();
            System.out.println("Reading file");
            BufferedReader in2 = new BufferedReader(new InputStreamReader(new
                    GZIPInputStream(new FileInputStream("test.gz"))));
            String s;
            while ((s = in2.readLine()) != null)
                System.out.println(s);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解决方案 »

  1.   

    in2.close()
    这句放在哪! 我在线等谢谢!
      

  2.   

    我把in2.close()加上了编译通过后但是出现了这样的错误:Except in thread"main" java.lang.NoClassDefFoundError:GZIPcompress请问这是怎么回事啊!在线......
      

  3.   

    import java.io.File;
    import org.apache.tools.zip.ZipOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    /**
    * @author tyrone
    *
    */
    public class DirectoryZip {
    /**
      *@param inputFileName, file or directory waiting for zipping ,outputFileName output file name 
      *
      */
    public void zip(String inputFileName,String outputFileName) throws Exception { 
      ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputFileName));
      zip(out, new File(inputFileName), "");
      System.out.println("zip done");
      out.close();
    }
    private void zip(ZipOutputStream out, File f, String base) throws Exception {
      if (f.isDirectory()) {
       File[] fl = f.listFiles();
       if (System.getProperty("os.name").startsWith("Windows")){
        out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "\\"));
        base = base.length() == 0 ? "" : base + "\\";
       }
       else{
        out.putNextEntry(new org.apache.tools.zip.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 org.apache.tools.zip.ZipEntry(base));
       FileInputStream in = new FileInputStream(f);
       int b;
       System.out.println(base);
       while ( (b = in.read()) != -1) {
        out.write(b);
       }
       in.close();
      }
    }
    public static void main(String[] args){
      DirectoryZip m_zip=new DirectoryZip();
      try{
       m_zip.zip(args[0],"release\\2005.zip");
      }catch(Exception ex){
       ex.printStackTrace();
      }
    }
      

  4.   

    import org.apache.tools.zip.ZipOutputStream;
    在一般的Ant.jar类库中有这个zip类,import org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,实在不行去下载个tomcat5.X,里面也有ant.jar,
      

  5.   

    java.util.zip或者org.apache.tools.zip都不能解压rar工具打成的rar包,搜了半天也找不到采用java解压rar工具打成的包,盼望哪位高人能够提供解压rar工具打成的包,和大家分享一下!
      

  6.   

    Except in thread"main" java.lang.NoClassDefFoundError:GZIPcompress
    出现这个错误是因为执行路径不正确。
    可以这样改: 
    在程序最前面加上package gzip;
    到工程目录下执行,
    譬如我的工程目录为:D:\WorkSpace\ProjectName,
    则到此目录下,执行java gzip.GZIPcompress input.txt
    其中input.txt是工程目录下的一个文件。
      

  7.   

    diy8187 你的例子错误出现了7个,不好改啊!
      

  8.   

    我没怎么学习JAVA,但是公司让我拿JAVA做项目,我也没办法!
    大家帮帮忙啊!谢谢各位哥哥了!
      

  9.   

    Java中自带java.util.zip.ZipOutputStream
    自己看JDK的文档吧。
      

  10.   

    import org.apache.tools.zip.ZipOutputStream;
    程序提示 这个地方出错 我该怎么办! 好想是包倒不进来! 要是这样我该怎么把这个包倒进来!
    个位大哥帮帮忙啊!
      

  11.   

    package test;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.zip.Adler32;
    import java.util.zip.CheckedOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;/**
     * @author Jimmy
     */
    public class ZipAFile {
      public static void zipAFile(File file, File zip) throws IOException {
        ZipOutputStream out = new ZipOutputStream(new CheckedOutputStream(new FileOutputStream(zip), new Adler32()));
        InputStream in = new FileInputStream(file);
        try {
          out.putNextEntry(new ZipEntry(file.getName()));
          final byte[] buf = new byte[8192];
          for (int i = 0; (i = in.read(buf)) != -1;) {
            out.write(buf, 0, i);
          }
          out.flush();
          out.closeEntry();
        } finally {
          if (out!=null) {
            out.finish();
            out.close();
          }
          if(in!=null){
            in.close();
          }
        }
      }  public static void main(String[] args) throws Exception{
        zipAFile(new File("c:/BOOTEX.LOG"), new File("c:/BOOTEX.zip"));
      }
    }
      

  12.   

    感谢个位仁兄的帮忙!
    TinyJimmy(jimmy):谢谢给我的程序, 我编译执行了一下过去了,但是压缩后解压时出现了错误:
    This archive is either in unknow format or damaged
     请问这是什么原因引起的,应该怎么改!
      

  13.   

    压缩的文件夹里没有文件, 可我放了! TinyJimmy(jimmy) 帮帮忙!