BufferedReader br=new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));其中zf是 ZipFile zf=new ZipFile(args[0]);
Enumeration entries=zf.entries();
试试

解决方案 »

  1.   

    这里应该是要用到相对应的解压:GZIPOutputStream这个类的,我就是不会具体应用,如果是把压缩过后的东东写入文件,再用GZIPOutputStream读那个文件,让那个被压的文件还原倒还好办一点的,但是我这里直接处理不会啊.
      

  2.   

    不知我是不是理解错了,是不是我的url所指那个文本文件(如a.txt)首先要用GZIPInputStream压缩好,然后再在网络上传?在这里读的时候才能用GZIPOutputStream解开来?各位大侠帮帮忙
      

  3.   

    用这个GZIP流不要再套用BUFFER。。流
    new GZIPInputStream(url.openStream()));
      

  4.   

    理解错了效率应该比以前底了GZIPInputStream 输入的是压缩过的数据流
    url.openStream()得到的数据流不是压缩过的   应该是不行的
      

  5.   

    import java.io.*;
    import java.util.zip.*;public class GZIPcompress {
      public static void main(String[] args) {
        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(Exception e) {
          e.printStackTrace();
        }
      }
    }
      

  6.   

    public class ZipCompress {
      public static void main(String[] args) {
        try {
          FileOutputStream f =
            new FileOutputStream("test.zip");
          CheckedOutputStream csum =
            new CheckedOutputStream(
              f, new Adler32());
          ZipOutputStream out =
            new ZipOutputStream(
              new BufferedOutputStream(csum));
          out.setComment("A test of Java Zipping");
          // Can't read the above comment, though
          for(int i = 0; i < args.length; i++) {
            System.out.println(
              "Writing file " + args[i]);
            BufferedReader in =
              new BufferedReader(
                new FileReader(args[i]));
            out.putNextEntry(new ZipEntry(args[i]));
            int c;
            while((c = in.read()) != -1)
              out.write(c);
            in.close();
          }
          out.close();
          // Checksum valid only after the file
          // has been closed!
          System.out.println("Checksum: " +
            csum.getChecksum().getValue());
          // Now extract the files:
          System.out.println("Reading file");
          FileInputStream fi =
             new FileInputStream("test.zip");
          CheckedInputStream csumi =
            new CheckedInputStream(
              fi, new Adler32());
          ZipInputStream in2 =
            new ZipInputStream(
              new BufferedInputStream(csumi));
          ZipEntry ze;
          System.out.println("Checksum: " +
            csumi.getChecksum().getValue());
          while((ze = in2.getNextEntry()) != null) {
            System.out.println("Reading file " + ze);
            int x;
            while((x = in2.read()) != -1)
              System.out.write(x);
          }
          in2.close();
          // Alternative way to open and read
          // zip files:
          ZipFile zf = new ZipFile("test.zip");
          Enumeration e = zf.entries();
          while(e.hasMoreElements()) {
            ZipEntry ze2 = (ZipEntry)e.nextElement();
            System.out.println("File: " + ze2);
            // ... and extract the data as before
          }
        } catch(Exception e) {
          e.printStackTrace();
        }
      }
    }
      

  7.   

    也就是说如果要想以压缩的形式在网络上传输的话,(我做的是APPLET形式的),是不是首先将要传送的文件用JAVA的ZIP包处理成压缩过的文件,然后在网络的另一端读的时候就直接读压缩过的文件过去,然后再解开压来解析流里的数据????
      

  8.   

    解释:
       我曾做过仿照winzip的java实现的压缩工具,也曾经尝试过网络传输,即:一边压缩一边传输,但是经过我得各种方式,均未成功,最后还是在本机压缩后,读压缩文件传输的。
       我觉得一边压缩一边传输不太可能实现吧,不知楼主是否和我的问题一致?
       敬请高手、同仁赐教!
      

  9.   

    其实,CS两端都可以使用原始数据,而在传输过程中使用GZIPOutputStream,这是可以实现的。
      

  10.   

    newman0708(nch) :"其实,CS两端都可以使用原始数据,而在传输过程中使用GZIPOutputStream,这是可以实现的。"两端使用原始数据?这就是说能够边在网络上传输边压缩了?不能老兄能否提供详细点的方法或代码,不胜感激!另:如果我开始就在服务端压缩好了,但我那个是要将很多个文件压成一个文件的,这样我在读的时候能够解析那个压缩文件里面的一个个文件而将其内容读出来吧?
      

  11.   

    请教高手:我要通过APPLET读取服务器上苦干个文件(文本文件),我能否开始将这若干个文本文件压缩成GZIP形式的,然后在APPLET中直接获得这个被压缩文件的输入流,然后再从该压缩文件流中取得每个未压之前的文件,按照未压的格式的读出来了?
        谢谢!