`
CrackRen
  • 浏览: 170798 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android Zip压缩解压缩

阅读更多

研究了一下Android上Zip的用法,写了个类把常用的几种方法写了出来

 

 

公共方法列表
static List<File>

GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)

 

取得压缩包中的文件列表(文件夹,文件自选)

zipFileString      : 压缩包文件

bContainFolder : 是否包括文件夹

bContainFile      : 是否包括文件

static InputStream

UpZip(String zipFileString, String fileString)

 

返回压缩包中的文件InputStream

zipFileString : 压缩包文件

fileString      : 要解压的文件名

static void

UnZipFolder(String zipFileString, String outPathString)

 

解压一个压缩文档 到指定位置

zipFileString    : 压缩包文件

outPathString : 要输出的路径

static void

ZipFolder(String srcFileString, String zipFileString)

 

压缩文件,文件夹

srcFileString : 要压缩的文件,文件夹的路径

zipFileString : 输出压缩包的路径

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/**
 * Android Zip压缩解压缩
 * @author Ren.xia
 * @version 1.0
 * @updated 26-七月-2010 13:04:27
 */
public class XZip {

	public XZip(){

	}
	
	/**
	 * 取得压缩包中的 文件列表(文件夹,文件自选)
	 * @param zipFileString		压缩包名字
	 * @param bContainFolder	是否包括 文件夹
	 * @param bContainFile		是否包括 文件
	 * @return
	 * @throws Exception
	 */
	public static java.util.List<java.io.File> GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception {
		
		android.util.Log.v("XZip", "GetFileList(String)");
		
		java.util.List<java.io.File> fileList = new java.util.ArrayList<java.io.File>();
		java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(zipFileString));
		java.util.zip.ZipEntry zipEntry;
		String szName = "";
		
		while ((zipEntry = inZip.getNextEntry()) != null) {
			szName = zipEntry.getName();
		
			if (zipEntry.isDirectory()) {
		
				// get the folder name of the widget
				szName = szName.substring(0, szName.length() - 1);
				java.io.File folder = new java.io.File(szName);
				if (bContainFolder) {
					fileList.add(folder);
				}
		
			} else {
				java.io.File file = new java.io.File(szName);
				if (bContainFile) {
					fileList.add(file);
				}
			}
		}//end of while
		
		inZip.close();
		
		return fileList;
	}

	/**
	 * 返回压缩包中的文件InputStream
	 * @param zipFileString		压缩文件的名字
	 * @param fileString	解压文件的名字
	 * @return InputStream
	 * @throws Exception
	 */
	public static java.io.InputStream UpZip(String zipFileString, String fileString)throws Exception {
		android.util.Log.v("XZip", "UpZip(String, String)");
		java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(zipFileString);
		java.util.zip.ZipEntry zipEntry = zipFile.getEntry(fileString);
		
		return zipFile.getInputStream(zipEntry);

	}
	
	
	/**
	 * 解压一个压缩文档 到指定位置
	 * @param zipFileString	压缩包的名字
	 * @param outPathString	指定的路径
	 * @throws Exception
	 */
	public static void UnZipFolder(String zipFileString, String outPathString)throws Exception {
		android.util.Log.v("XZip", "UnZipFolder(String, String)");
		java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(zipFileString));
		java.util.zip.ZipEntry zipEntry;
		String szName = "";
		
		while ((zipEntry = inZip.getNextEntry()) != null) {
			szName = zipEntry.getName();
		
			if (zipEntry.isDirectory()) {
		
				// get the folder name of the widget
				szName = szName.substring(0, szName.length() - 1);
				java.io.File folder = new java.io.File(outPathString + java.io.File.separator + szName);
				folder.mkdirs();
		
			} else {
		
				java.io.File file = new java.io.File(outPathString + java.io.File.separator + szName);
				file.createNewFile();
				// get the output stream of the file
				java.io.FileOutputStream out = new java.io.FileOutputStream(file);
				int len;
				byte[] buffer = new byte[1024];
				// read (len) bytes into buffer
				while ((len = inZip.read(buffer)) != -1) {
					// write (len) byte from buffer at the position 0
					out.write(buffer, 0, len);
					out.flush();
				}
				out.close();
			}
		}//end of while
		
		inZip.close();
	
	}//end of func
	

	/**
	 * 压缩文件,文件夹
	 * @param srcFileString	要压缩的文件/文件夹名字
	 * @param zipFileString	指定压缩的目的和名字
	 * @throws Exception
	 */
	public static void ZipFolder(String srcFileString, String zipFileString)throws Exception {
		android.util.Log.v("XZip", "ZipFolder(String, String)");
		
		//创建Zip包
		java.util.zip.ZipOutputStream outZip = new java.util.zip.ZipOutputStream(new java.io.FileOutputStream(zipFileString));
		
		//打开要输出的文件
		java.io.File file = new java.io.File(srcFileString);

		//压缩
		ZipFiles(file.getParent()+java.io.File.separator, file.getName(), outZip);
		
		//完成,关闭
		outZip.finish();
		outZip.close();
	
	}//end of func
	
	/**
	 * 压缩文件
	 * @param folderString
	 * @param fileString
	 * @param zipOutputSteam
	 * @throws Exception
	 */
	private static void ZipFiles(String folderString, String fileString, java.util.zip.ZipOutputStream zipOutputSteam)throws Exception{
		android.util.Log.v("XZip", "ZipFiles(String, String, ZipOutputStream)");
		
		if(zipOutputSteam == null)
			return;
		
		java.io.File file = new java.io.File(folderString+fileString);
		
		//判断是不是文件
		if (file.isFile()) {

			java.util.zip.ZipEntry zipEntry =  new java.util.zip.ZipEntry(fileString);
			java.io.FileInputStream inputStream = new java.io.FileInputStream(file);
			zipOutputSteam.putNextEntry(zipEntry);
			
			int len;
			byte[] buffer = new byte[4096];
			
			while((len=inputStream.read(buffer)) != -1)
			{
				zipOutputSteam.write(buffer, 0, len);
			}
			
			zipOutputSteam.closeEntry();
		}
		else {
			
			//文件夹的方式,获取文件夹下的子文件
			String fileList[] = file.list();
			
			//如果没有子文件, 则添加进去即可
			if (fileList.length <= 0) {
				java.util.zip.ZipEntry zipEntry =  new java.util.zip.ZipEntry(fileString+java.io.File.separator);
				zipOutputSteam.putNextEntry(zipEntry);
				zipOutputSteam.closeEntry();				
			}
			
			//如果有子文件, 遍历子文件
			for (int i = 0; i < fileList.length; i++) {
				ZipFiles(folderString, fileString+java.io.File.separator+fileList[i], zipOutputSteam);
			}//end of for
	
		}//end of if
		
	}//end of func
	
	public void finalize() throws Throwable {
		
	}

}
 

 

8
1
分享到:
评论
3 楼 蓝月儿 2011-04-13  
真好 很有帮助 学习学习,
2 楼 常思己过 2011-03-11  
总结的很好,简洁明了
1 楼 liuborama 2011-01-07  
很有帮助,多谢了

相关推荐

    java android zip解压缩(解决压缩中文乱码问题)

    本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...

    android zip压缩demo

    本示例“android zip压缩demo”提供了一个实际应用在项目中的例子,确保了其功能的可靠性和实用性。下面我们将深入探讨如何在Android中进行zip文件的处理。 1. **Zip文件格式**: Zip是一种广泛使用的文件格式,...

    (安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip

    (安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,...

    javaandroid可用的ziprar解压缩代码实现.rar

    在Android平台上,对ZIP和RAR文件进行解压缩是常见的需求,比如在安装APK应用、更新资源文件或者处理用户上传的数据时。JavaAndroid可用的ziprar解压缩代码实现提供了这样的功能,但请注意,由于文件数量多,可能...

    Android的zip解压缩

    本文将深入探讨如何在Android平台上进行zip文件的解压缩操作。 首先,我们需要理解zip文件的基本概念。Zip是一种常用的文件格式,用于存储多个文件和目录在一个单一的、可压缩的档案中。在Android上,我们可以使用...

    Android中的Zip解压缩|Unzip.java

    Android中的Zip解压缩----存在BUG(空文件夹压缩、解压缩会丢失,中文乱码)

    Android将assets中的zip压缩文件解压到SD卡

    在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...

    android 压缩 解压缩

    `DemoZipUtils`是一个工具类,专门用于在Android平台上实现文件和文件夹的压缩与解压缩功能。下面将详细介绍这个工具类可能包含的关键知识点以及相关技术。 1. **ZIP文件格式**:ZIP是一种广泛使用的文件压缩格式,...

    android Zip解压、压缩

    以上代码示例展示了如何在Android应用中进行Zip文件的解压缩和压缩操作。请注意,实际应用中可能需要考虑异常处理、多线程优化以及资源管理等细节问题。此外,如果对性能有较高要求,可以考虑使用第三方库如Apache ...

    Android zip文件压缩解压

    Android Asynchronous File Chooser库不仅用于文件选择,还包含解压缩功能。首先,添加依赖,然后调用提供的API来解压文件。 ```java AsyncTask.execute(new Runnable() { @Override public void run() { try { ...

    Android-文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip

    Android-文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip Android-文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip Android-文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip

    AndroidZip4j-master_java_android_zip_Compression_

    《AndroidZip4j:Java在Android上的压缩与解压缩库》 在移动开发领域,特别是在Android平台上,数据的压缩和解压缩是常见的需求。开发者常常需要处理大量的文件,例如资源包、更新包或者用户数据备份等,这时就需要...

    基于zip4j开源框架实现android解压带有密码的zip文件(进度条显示)

    在Android开发中,有时我们需要处理压缩文件,例如解压或压缩数据。对于这种需求,可以使用各种库,其中`zip4j`是一个流行的开源框架,它提供了方便的API来处理ZIP文件,包括设置密码和显示进度条等功能。本文将详细...

    unity解压缩zip包可用dll。net3.5;net4.0。亲测PC可用,移动端可用。

    标题和描述中提到的“unity解压缩zip包可用dll”,是指在Unity中用于解压缩ZIP文件的动态链接库(DLL)文件。 DLL(Dynamic Link Library)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的代码和...

    Android Zip解压缩工具类分享

    Android Zip解压缩工具类分享 本文主要介绍了Android Zip解压缩工具类的实现,提供了详细的代码实现和解释,旨在帮助开发者更好地理解和使用 Zip解压缩工具类。 Zip解压缩工具类的重要性 在 Android 开发中,Zip ...

    基于Android的文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip

    通过研究这个项目的源码,开发者可以学习到Android的UI设计、事件处理、文件操作、权限管理、压缩解压缩技术以及如何在不同IDE之间迁移项目。这将有助于深化对Android开发的理解,并为实际项目开发积累经验。

    Android-Android端zip压缩与解压支持使用密码对单文件多文件文件夹进行压缩以及解压操作

    3. **解压到目标目录**:调用`extractAll()`方法,将ZIP文件解压缩到指定的目录。 ```java String targetDir = "/path/to/destination/directory"; zipFile.extractAll(targetDir); ``` 在Android开发中,考虑到...

    java、android可用的zip、rar解压缩代码实现

    本文将详细介绍如何在Android和Java环境中实现zip和rar文件的解压缩。 首先,让我们关注zip文件。在Java中,`java.util.zip`包提供了对zip文件的支持。你可以使用`ZipInputStream`来读取zip文件,并通过`ZipEntry`...

    文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip

    5. **Zip压缩解压缩**: Zip文件格式是一种常见的压缩格式,用于减少文件大小便于存储和传输。在Android中,可以使用`java.util.zip`包中的`ZipInputStream`和`ZipOutputStream`类进行压缩和解压缩操作。同时,对于...

Global site tag (gtag.js) - Google Analytics