[JAVA100例]040、压缩和解压文件

//文件名:myZip.java
import java.io.*;
import java.util.*;
import java.util.zip.*;
/**
* <p>Title: 文件压缩和解压</p>
* <p>Description: 使用ZipInputStream和ZipOutputStream对文件
*         和目录进行压缩和解压处理</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: myZip.java</p>
* @version 1.0
*/
public class myZip{
/**
*<br>方法说明:实现文件的压缩处理
*<br>输入参数:String[] fs 压缩的文件数组
*<br>返回类型:
*/
 public void ZipFiles(String[] fs){
  try{
   String fileName = fs[0];
   FileOutputStream f =
    new FileOutputStream(fileName+".zip");
   //使用输出流检查
   CheckedOutputStream cs =
    new CheckedOutputStream(f,new Adler32());
   //声明输出zip流
   ZipOutputStream out =
    new ZipOutputStream(new BufferedOutputStream(cs));
   //写一个注释
   out.setComment("A test of Java Zipping");
   //对多文件进行压缩
   for(int i=1;i<fs.length;i++){
    System.out.println("Write file "+fs[i]);
    BufferedReader in =
      new BufferedReader(
       new FileReader(fs[i]));
     out.putNextEntry(new ZipEntry(fs[i]));
     int c;
     while((c=in.read())!=-1)
     out.write(c);
    in.close();
    }
    //关闭输出流
    out.close();
    System.out.println("Checksum::"+cs.getChecksum().getValue());
  }catch(Exception e){
    System.err.println(e);
  }
 }
/**
*<br>方法说明:解压缩Zip文件
*<br>输入参数:String fileName 解压zip文件名
*<br>返回类型:
*/
 public void unZipFile(String fileName){
  try{
    System.out.println("读取ZIP文件........");
    //文件输入流
    FileInputStream fi =
     new FileInputStream(fileName+".zip");
    //输入流检查
    CheckedInputStream csi = new CheckedInputStream(fi,new Adler32());
    //输入流压缩
    ZipInputStream in2 =
     new ZipInputStream(
      new BufferedInputStream(csi));
    ZipEntry ze;
    System.out.println("Checksum::"+csi.getChecksum().getValue());
    //解压全部文件
    while((ze = in2.getNextEntry())!=null){
     System.out.println("Reading file "+ze);
     int x;
     while((x= in2.read())!=-1)
      //这里是写文件,write是以byte方式输出。
      System.out.write(x);
    }
    in2.close();
  }catch(Exception e){
   System.err.println(e);
  }
 }
/**
*<br>方法说明:读取Zip文件列表
*<br>输入参数:String fileName zip文件名
*<br>返回类型:Vector 文件列表
*/
 public Vector listFile(String fileName){
  try{
    String[] aRst=null;
    Vector vTemp = new Vector();
    //zip文件对象
    ZipFile zf = new ZipFile(fileName+".zip");
    Enumeration e = zf.entries();
    while(e.hasMoreElements()){
     ZipEntry ze2 = (ZipEntry)e.nextElement();
     System.out.println("File: "+ze2);
     vTemp.addElement(ze2);
    }
    return vTemp;
  }catch(Exception e){
   System.err.println(e);
   return null;
  }
 }
/**
*<br>方法说明:主方法
*<br>输入参数:
*<br>返回类型:
*/
 public static void main(String[] args){
  try{
   String fileName = args[0];
   myZip myZip = new myZip();
   myZip.ZipFiles(args);
   myZip.unZipFile(fileName);
   Vector dd = myZip.listFile(fileName);
   System.out.println("File List: "+dd);
  }catch(Exception e){
   e.printStackTrace();
  }
 }
}

时间: 2024-09-14 15:16:00

[JAVA100例]040、压缩和解压文件的相关文章

Mac电脑怎么压缩和解压文件与文件夹

  苹果Mac电脑压缩和解压文件与文件夹的方法 1.如果你需要处理的文件不在桌面上,那么需要先点击[前往]--->[电脑] 2.在电脑窗口中的左侧,有[我的所有文件夹].[应用程序].[桌面]...[图片]这些选项.你能操作的也只有这些选项中的文件或者文件夹.我这里需要把音乐那一项里面的[iTunes]文件夹压缩.那么我就点击[音乐] 3.点击你需要处理文件所在的位置那一项之后,在里面找到需要处理的文件夹或者文件,在其上点击鼠标右键---->[压缩"文件/文件夹名字"] 4

在Linux系统中使用tar命令压缩和解压文件的教程

  linux中的tar命令 tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令. 其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩. 在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子. 使用tar命令 tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件. tar命令具有两个压缩格式,gzip和bzip,

Java操作Ant压缩和解压文件及批量打包Anroid应用_Android

实现zip/tar的压缩与解压 java中实际是提供了对  zip等压缩格式的支持,但是为什么这里会用到ant呢? 原因主要有两个: 1. java提供的类对于包括有中文字符的路径,文件名支持不够好,你用其它第三方软件解压的时候就会存在乱码.而ant.jar就支持文件名或者路径包括中文字符. 2. ant.jar提供了强大的工具类,更加方便于我们对压缩与解压的操作. 注意事项: 1. 首先说明一下,关于皮肤或者类似于皮肤的Zip包,实际上公司可能会根据自己的规定或需求,自定义压缩包文件的结尾,实

使用java.util.zip实现文件压缩和解压

import java.io.*; import java.util.zip.*; /** *//** *功能:zip压缩.解压 *说明:本程序通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能. *问题:由于java.util.zip包并不支持汉字,当zip文件中有名字为中文的文件时 , author by http://www.bt285.cn http://www.5a520.cn * 就会出现异常:"Exception in thread &quo

总结Linux中压缩文件和解压文件的用法

总结Linux中压缩文件和解压文件的用法,压缩文件和解压文件是在Linux中最常见的一种操作,熟悉和掌握这部分的技能也是必须的,一般我们常用的命令有:tar.unzip.bunzip2等等,如何正确的使用也是需要掌握的一个知识重点,下面我们分两个部分来对压缩文件和解压文件进行说明. a.解压小全 tar -I或者bunzip2命令都可以解压.bz2文件tar xvfj example.tar.bz2tar xvfz example.tar.gztar xvfz example.tgztar xv

asp.NET中实现文件的压缩和解压(3种方式)_实用技巧

在.NET可以通过多种方式实现zip的压缩和解压:1.使用System.IO.Packaging:2.使用第三方类库:3.通过 System.IO.Compression 命名空间中新增的ZipArchive.ZipFile等类实现. 一.使用System.IO.Packaging压缩和解压 Package为一个抽象类,可用于将对象组织到定义的物理格式的单个实体中,从而实现可移植性与高效访问.ZIP 文件是Package的主物理格式. 其他Package实现可以使用其他物理格式(如 XML 文档

C#中利用SharpZipLib进行压缩和解压

压缩 我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手.只好耐下心来,慢慢的研究,总算找到了门路.针对自己的需要改写了文件压缩和解压缩的两个类,分别为ZipClass和UnZipClass.其中碰到了不少困难,就决定写出来压缩和解压的程序后,一定把源码贴出来共享,让首次接触压缩和解压缩的朋友可以少走些弯路.下面就来解释如何在C#里用http://www.icsh

ruby利用Zip Gem写一个简单的压缩和解压的小工具

    在UNIX下的我们怎么会沦落到用ruby写压缩和解压工具呢?直接上shell啊!但是请允许本猫这次可耻的用ruby来玩玩吧!其实ruby GEM中有很多压缩解压包,我选的是Zip,也许是因为名字符合KISS原则吧!不过在编写中发现Zip中的某些类没有文档中所说明的实例方法,也许在某个平台上还未实现??     话先说到前头,这个工具如果解压有重名文件的情况会直接覆盖原文件而不会有任何提示!测试时务必注意,如果造成一些文件丢失可别怪本猫啊!     代码也考虑到多文件的情况,如果是压缩多文

在服务器端实现文件自动压缩和解压

使用过http://www.aliyun.com/zixun/aggregation/14840.html">虚拟主机时,有时需要备份或者更新过自己整个网站的内容.如果服务器支持压缩解压,那自然再好 不过--备份时在后台生成压缩包,直接下载:更新时上传一个打包的压缩文件,在线解压即可.可是很不幸,很多空间商的后台并不提供在线压缩解压的功能.那怎么办?这里就提供几个比较实用的技巧,可以实现在服务器端进行压缩解压的方法.对后台不支持压缩解压的虚拟主机来说再 合适不过了,希望能对大家有所帮助吧.