`
knight_black_bob
  • 浏览: 853132 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gzip unzip java 压缩 解压缩 bytes

    博客分类:
  • java
阅读更多

 

 

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipInputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

public class ZipUtil
{
	 
	static void createDir(String path)
	{
		File dir = new File(path);
		if (dir.exists() == false)
			dir.mkdir();
	}

	 
	static String getSuffixName(String name)
	{
		return name.substring(0, name.lastIndexOf("."));
	}
 
	public static void unzip(File src, File dstDir) throws IOException
	{
		ZipFile zipFile = null;
		try
		{
			// 创建zip文件对象
			//zipFile = new ZipFile(src);
			 if(System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0){  
	             zipFile = new ZipFile(src,"GBK");  
	         }else if(System.getProperty("os.name").toLowerCase().indexOf("linux") >= 0){  
	             //zipFile = new ZipFile(src,"GB2312");
	        	 zipFile = new ZipFile(src,"GBK");
	         }  
			// 得到zip文件条目枚举对象
			Enumeration zipEnum = zipFile.getEntries();
			// 定义输入输出流对象
			// 定义对象
			ZipEntry entry = null;
			// 循环读取条目
			while (zipEnum.hasMoreElements())
			{
				// 得到当前条目
				entry = (ZipEntry) zipEnum.nextElement();
				String entryName = new String(entry.getName());			
				// 用/分隔条目名称
				String names[] = entryName.split("\\/");
				int length = names.length;
				String path = dstDir.getAbsolutePath();
				for (int v = 0; v < length; v++)
				{
					if (v < length - 1)
					{ // 最后一个目录之前的目录
						path += "/" + names[v] + "/";
						createDir(path);
					}
					else
					{ // 最后一个
						if (entryName.endsWith("/")) // 为目录,则创建文件夹
							createDir(dstDir.getAbsolutePath() + "/" + entryName);
						else
						{
							InputStream input = null;
							OutputStream output = null;
							try
							{// 为文件,则输出到文件
								input = zipFile.getInputStream(entry); 
								output = new FileOutputStream(new File(dstDir.getAbsolutePath() + "/" + entryName));
								byte[] buffer = new byte[1024 * 8];
								int readLen = 0;
								while ((readLen = input.read(buffer, 0, 1024 * 8)) != -1)
									output.write(buffer, 0, readLen);
								// 关闭流
								output.flush();
							}
							finally
							{
								if (input != null)
									input.close();
								if (output != null)
									output.close();
							}
						}
					}
				}
			}
		}
		finally
		{
			if (zipFile != null)
				zipFile.close();
		}
	}
 
	public static void unzip(String zipFilePath, String unzipDirectory) throws Exception
	{
		// 创建文件对象
		File file = new File(zipFilePath);
		// 创建本zip文件解压目录
		File unzipFile = new File(unzipDirectory);
		if (unzipFile.exists())
			unzipFile.delete();
		unzipFile.mkdir();
		unzip(file, unzipFile);
	}
 
	public static byte[] unZip(byte[] data)
	{
		byte[] b = null;
		try
		{
			ByteArrayInputStream bis = new ByteArrayInputStream(data);
			ZipInputStream zip = new ZipInputStream(bis);
			while (zip.getNextEntry() != null)
			{
				byte[] buf = new byte[1024];
				int num = -1;
				ByteArrayOutputStream baos = new ByteArrayOutputStream();
				while ((num = zip.read(buf, 0, buf.length)) != -1)
				{
					baos.write(buf, 0, num);
				}
				b = baos.toByteArray();
				baos.flush();
				baos.close();
			}
			zip.close();
			bis.close();
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
		return b;
	}

	public static byte[] gZip(byte[] data) {
		  byte[] b = null;
		  try {
		   ByteArrayOutputStream bos = new ByteArrayOutputStream();
		   GZIPOutputStream gzip = new GZIPOutputStream(bos);
		   gzip.write(data);
		   gzip.finish();
		   gzip.close();
		   b = bos.toByteArray();
		   bos.close();
		  } catch (Exception ex) {
		   ex.printStackTrace();
		  }
		  return b;
		 }
	
	
	public static void main(String[] args) throws Exception
	{
		// unzip("F:/aaaaaaaa.zip", "F:");
		// System.out.println("over....................");
		String a = "hellp aa bb cc";
		System.out.println(a.lastIndexOf("he"));

	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

分享到:
评论

相关推荐

    Java实现压缩解压缩文件和文件夹(附源码)

    Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩

    php zip gzip tar..压缩解压缩类

    这个资源包包含了处理zip、gzip和tar等压缩格式的类,提供了方便的方法来完成这些工作。以下是对这些知识点的详细说明: 1. **PHP**:PHP(PHP:Hypertext Preprocessor)是一种开源的服务器端脚本语言,广泛用于...

    java解压缩zip代码与用到的jar包

    在本篇中,我们将深入探讨如何使用Java API来实现ZIP文件的解压缩,以及可能需要用到的第三方库。 首先,Java标准库(Java Standard Library)自身提供了对ZIP文件的支持。在`java.util.zip`包中,有两个关键类用于...

    java 自动解压缩

    在这个场景中,我们提到的"java 自动解压缩"可能涉及到一个Java程序,它能够自动化地对ZIP或GZIP格式的压缩文件进行解压。此外,提到了`ant.jar`,这是Apache Ant工具的库,它是一个基于Java的任务执行框架,常用于...

    zip、unzip 解压缩工具 for C++、WIN32.zip

    这个名为"zip、unzip 解压缩工具 for C++、WIN32.zip"的资源提供了一个适用于Windows 32位系统的C++库,用于处理ZIP格式的压缩和解压缩操作。这个库可能包含了一系列的函数和示例代码,帮助开发者轻松地将这些功能...

    java zip解压中文乱码问题

    网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.... new ZipUtil().unZip("E:\\aaaa\\中文.zip","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.zip解压到E:\\aaaa\\中文目录下

    带源码的unix解压缩工具unzip5

    《Unix解压缩工具Unzip5及其源码解析》 在信息技术领域,文件压缩与解压缩是日常工作中不可或缺的一部分。在Unix系统中,Unzip作为一款经典的解压缩工具,被广泛应用于处理.zip格式的压缩文件。本文将深入探讨Unzip...

    解压缩软件UNZIP的C源程序代码unzip

    《深入解析UNZIP解压缩软件的C源代码》 UNZIP是一款经典的开源解压缩软件,其C源代码具有很高的学习价值。本文将深入探讨UNZIP的实现原理,并通过分析源代码,揭示其在文件解压过程中的核心算法和技术细节。 一、...

    java算法,实现压缩及解压缩

    ### Java算法:实现压缩及解压缩 #### 一、压缩功能实现 在Java中实现文件压缩功能主要依赖于`java.util.zip`包中的类。以下是对压缩代码的详细解析: ##### 1. 导入所需类库 ```java import java.io....

    C++ 压缩解压缩库

    在给定的标题“C++ 压缩解压缩库”中,我们可以推断这是一个针对C++语言的库,专注于文件或数据的压缩与解压缩功能。描述提到这是为VS2012版本编译的,意味着它可能使用了Visual Studio 2012的编译环境,并且库已经...

    java zip and unzip

    Java 提供了内置的支持来完成文件的压缩与解压缩操作,这些功能主要通过 `java.util.zip` 区域内的类实现。 #### 二、Zip 相关类介绍 - **ZipOutputStream**:用于创建 zip 压缩文件。 - **ZipEntry**:表示 zip ...

    java zip解压缩

    本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。 一、Java Zip压缩 1. 使用`ZipOutputStream`类进行压缩: `ZipOutputStream`是Java提供的用于...

    Windows命令行压缩解压缩工具

    `zip`命令用于压缩文件或目录,而`unzip`命令则用于解压缩zip文件。例如,你可以使用`zip -r archive_name .`来压缩当前目录及其所有子目录到一个名为archive_name的zip文件,`unzip archive_name`则可以解压这个zip...

    java实现压缩与解压缩源码,demo 分享.zip

    10. **解压缩源码分析**:在提供的"java实现压缩与解压缩源码,demo分享.pdf"文件中,你可以找到具体的实现细节,包括如何打开和关闭流,如何处理文件条目,以及如何管理内存缓冲区等。 通过理解和应用这些知识点,...

    unix压缩解压缩命令详解

    Unix 压缩解压缩命令详解 Unix 操作系统中有多种压缩和解压缩命令,了解这些命令非常重要。本文将详细介绍 Unix 中常用的压缩格式和相应的压缩、解压缩命令。 tar 命令 tar 命令是 Unix 中最常用的打包命令,它...

    ucos移植zlib和zip文件解压缩

    为了在UCOS上实现ZIP解压,我们可以利用开源库,例如ZIP解压缩工具“unzip”。文件unzip101h可能是包含UNZIP库源代码的一个头文件。 1. 移植UNZIP库:如同ZLIB,我们需要对UNZIP库进行类似的配置和编译过程。这可能...

    Linux 压缩解压缩

    - 解压缩:`unzip 压缩后的文件名.zip`。 在选择合适的压缩工具时,需要考虑文件大小、压缩率、速度以及是否需要跨平台兼容性。在C编程中,开发者还可以通过调用这些工具的库函数来实现压缩和解压缩功能,例如使用...

    java zip 压缩 解压缩 附带ant.jar

    在Java编程语言中,处理文件的压缩和解压缩任务是一项常见的需求。`zip`格式是一种广泛使用的文件归档格式,可以将多个文件和目录打包成一个单一的文件,便于存储和传输。`java.util.zip`是Java标准库提供的用于处理...

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

    首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`ZipInputStream`和`ZipEntry`这两个类。`ZipInputStream`是用于读取ZIP文件的输入流...

    C++ zip压缩解压缩源代码

    C++ zip压缩解压缩源代码 压缩时调用 #include "zip.h" HZIP hz = CreateZip("c:\\simple1.zip",0); ZipAdd(hz,"znsimple.bmp", "c:\\simple.bmp"); ZipAdd(hz,"znsimple.txt", "c:\\simple.txt"); ...

Global site tag (gtag.js) - Google Analytics