ZipEntry、ZipInputStream和ZipOutputStream三个Java类实现zip数据压缩方式的编程方法。
zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的数据项存储压缩数据。
与zip文件有关的几个Java类
・类ZipEntry
public ZipEntry(String name);
name为指定的数据项名。
・类ZipOutputStream
ZipOutputStream实现了zip压缩文件的写输出流,支持压缩和非压缩entry。下面是它的几个函数:
public ZipOutputStream(OutputStream out);
∥利用输出流out构造一个ZIP输出流。
public void setMethod(int method);
∥设置entry压缩方法,缺省值为DEFLATED。
public void putNextEntry(ZipEntry newe);
∥如果当前的entry存在且处于激活状态时,关闭它,在zip文件中写入新的entry-newe
并将数据流定位于entry数据项的起始位置,压缩方法为setMethod指定的方法。
・类ZipInputStream
ZipInputStream实现了zip压缩文件的读输入流,支持压缩和非压缩entry。下面是它的
几个函数:
public ZipInputStream(InputStream in);
∥利用输入流in构造一个ZIP输出流。
public ZipEntry getNextEntry();
∥返回ZIP文件中的下一个entry,并将输出流定位在此entry数据项的起始位置。
public void closeEntry();
∥关闭当前的zip entry,并将数据流定位于下一个entry的起始位置。
需要导入ant.jar包
下面是压缩的:
package org.cfsdc.action; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import org.apache.struts2.ServletActionContext; public class Test { public static void main(String[] args) throws Exception { String inputpath = "D:\\zipTest"; String zipOutpath = "D:\\ziptest.zip"; zipTest(inputpath,zipOutpath); unZip ( "D:\\ziptest.zip" , "D://opt" ); } private static void zipTest(String inputpath, String zipFile) throws IOException { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile)); File inputpathFile = new File(inputpath); if(inputpathFile.exists() && inputpathFile.isDirectory()){ File[] inputs = inputpathFile.listFiles(); for(File i :inputs){ out.putNextEntry(new ZipEntry(i.getName())); getZip(i.getAbsoluteFile(),out); } } out.flush(); out.close(); } private static void getZip(File absoluteFile, ZipOutputStream out) throws IOException { InputStream input = new FileInputStream(absoluteFile);//这里只能输入文件 byte[] buffer = new byte[2048]; int len=-1; while((len=input.read(buffer))!= -1){ out.write(buffer, 0, len); } } }
下面是解压的方法
/** * 解压 */ public static void unZip(String zipfile, String destDir) { destDir = destDir.endsWith( "//" ) ? destDir : destDir + "//" ; byte b[] = new byte [1024]; int length; ZipFile zipFile; try { zipFile = new ZipFile( new File(zipfile)); Enumeration enumeration = zipFile.getEntries(); ZipEntry zipEntry = null ; while (enumeration.hasMoreElements()) { zipEntry = (ZipEntry) enumeration.nextElement(); File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) { // 这段都可以不要,因为每次都貌似从最底层开始遍历的 loadFile.mkdirs(); } else { if (!loadFile.getParentFile().exists()) loadFile.getParentFile().mkdirs(); OutputStream outputStream = new FileOutputStream(loadFile); InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) > 0) outputStream.write(b, 0, length); } } System. out .println( " 文件解压成功 " ); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
相关推荐
java压缩解压ZIP
这几天做一个操作docx的文档的功能,Apache的POI功能有限,就参考了相关资料写的一个Java压缩和解压zip文件的工具类。全部使用的是Java自带的类库,中文的文件名会有乱码的问题。
用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
java实现的解压与压缩的类 其中有zip和rar类型的 还包括了所需的架包
Java实现的带密码压缩与解压zip文件源码,可将多个文件使用不同的密码压进同一个zip文件;可以解压带密码的zip文件(store压缩模式)
java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
java 压缩/解压 .zip/.rar/.tar 文件,大家一起讨论,学习 已实现zip压缩/解压,rar解压
使用 Java 语言实现并封装的创建 ZIP 格式的压缩文件并解压到指定目录和解压 ZIP 文件到指定目录的工具类。
本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压
Java带密码压缩zip与解压文件源码源码整理
java 操作Zip文件(压缩、解压、加密) zip4j-1.3.2.jar ant-1.10.6.jar
java 文件zip 压缩与解压 可以直接调用
使用java压缩也解压zip文件方法,解决中文乱码问题。使用java自带的压缩解压算法,会出现中文乱码问题。使用apache io的zip包,有效解决该问题。Ant的压缩解压,也是使用该类。
java压缩文件成zip实现无乱码 内置类与jar包
java zip 压缩解压例子
Java带密码压缩zip与解压文件源码Java实用源码整理learns
java 中压缩ZIP格式源码,仅供参考。
zip 压缩 文件 Java zip 压缩 文件 Java zip 压缩 文件 Java zip 压缩 文件 Java