用zip压缩保存文件

本文提供了一个Java实现的文件压缩与解压缩示例,使用ZipOutputStream与ZipInputStream进行操作,并通过Checksum验证数据完整性。此外,还展示了如何通过ZipFile类读取ZIP文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自java编程思想

 

public class ZipCompress {

  private static Test monitor = new Test();

  // Throw exceptions to console:

  public static void main(String[] args)

  throws IOException {

    FileOutputStream f = new FileOutputStream("test.zip");

    CheckedOutputStream csum =

      new CheckedOutputStream(f, new Adler32());

     ZipOutputStream zos = new ZipOutputStream(csum);

     BufferedOutputStream out =

      new BufferedOutputStream(zos);

    zos.setComment("A test of Java Zipping");

    // No corresponding getComment(), though.

    for(int i = 0; i < args.length; i++) {

      System.out.println("Writing file " + args[i]);

      BufferedReader in =

        new BufferedReader(new FileReader(args[i]));

      //对于每一个要加入压缩档案的文件,都必须调用putNextEntry()

      zos.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(csumi);

    BufferedInputStream bis = new BufferedInputStream(in2);

    ZipEntry ze;

    while((ze = in2.getNextEntry()) != null) {

      System.out.println("Reading file " + ze);

      int x;

      while((x = bis.read()) != -1)

        System.out.write(x);

    }

    if(args.length == 1)

      monitor.expect(new String[] {

        "Writing file " + args[0],

        "%% Checksum: //d+",

        "Reading file",

        "Reading file " + args[0]}, args[0]);

    System.out.println("Checksum: " +

      csumi.getChecksum().getValue());

    bis.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

    }

    if(args.length == 1)

      monitor.expect(new String[] {

        "%% Checksum: //d+",

        "File: " + args[0]

      });

  }

} ///:~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值