`

java压缩和解压zip

 
阅读更多

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

    java压缩解压ZIP

    java将文件夹压缩成zip,解压zip压缩包

    解压ZIP文件的过程相对简单,主要使用`ZipInputStream`和`FileOutputStream`。以下是解压的基本步骤: 1. **创建`ZipInputStream`**:使用`FileInputStream`打开ZIP文件,然后传递给`ZipInputStream`。 2. **读取`...

    Java压缩解压ZIP之Zip4j

    这篇博客文章“Java压缩解压ZIP之Zip4j”可能详细介绍了如何使用Zip4j进行文件的压缩和解压缩操作。 首先,我们需要了解Zip4j库的核心概念。Zip4j提供了一个名为`ZipFile`的类,它代表一个ZIP文件,包含了所有与ZIP...

    Java实现的带密码压缩与解压zip文件源码

    `ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压ZIP文件。为了添加密码保护,我们需要在创建`ZipOutputStream`时设置一个密码。 1. **密码保护**:在压缩过程中,可以使用`ZipEntry`对象来...

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

    java实现的解压与压缩 zip和rar类型的

    本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...

    用Java压缩解压ZIP文件

    用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

    Java实现Zip的压缩和解压

    NULL 博文链接:https://zhenyong.iteye.com/blog/1576148

    JAVA解压ZIP格式的压缩包_java解压缩_zip_

    本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`...

    java 中 zip压缩文件解压工具类

    总的来说,Java的`java.util.zip`包为处理压缩文件提供了强大的支持,包括ZIP和JAR格式。通过创建如`CompressFileUtils`这样的工具类,我们可以方便地实现文件的解压缩操作,这对于处理资源文件、打包应用或在网络上...

    java Zip压缩解压

    总结来说,"java Zip压缩解压"涉及了Java标准库中的`java.util.zip`包,用于创建和读取ZIP文件;Apache Ant作为构建工具,可能用于自动化压缩和解压过程;而JUnit则用于编写和运行测试,确保代码的正确实现。在实际...

    java zip压缩解压工具解决中文乱码问题

    而解压ZIP文件,可以使用`unzip()`方法: ```java File sourceZip = new File("input.zip"); File destinationDir = new File("destination"); ZipUtils.unzip(sourceZip, destinationDir); ``` 以上代码片段展示...

    Java压缩和解压缩zip文件

    `ZipOutputStream` 用于创建ZIP文件,而 `ZipInputStream` 则用于读取和解压ZIP文件。以下是一个简单的压缩示例: ```java import java.io.*; import java.util.zip.*; public class ZipUtil { public static ...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    `FileUtils.java`类是这个功能的具体实现,它封装了上述的压缩和解压过程,使开发者能够轻松地在代码中调用这些功能。理解并掌握这些知识,对于进行Java相关的文件操作和数据打包工作至关重要。

    java 文件zip 压缩与解压

    java 文件zip 压缩与解压 可以直接调用

    java压缩zip文件解决中文乱码问题

    在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...

    Java zip 压缩/解压源码

    解压ZIP文件的过程相对简单: - 使用`ZipFile`打开ZIP文件。 - 遍历`ZipFile`的所有条目(`ZipEntry`)。 - 对于每个条目,创建一个`FileOutputStream`,指定目标解压路径。 - 创建`ZipInputStream`,基于`...

Global site tag (gtag.js) - Google Analytics