研究了一下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 {
}
}
分享到:
相关推荐
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...
本示例“android zip压缩demo”提供了一个实际应用在项目中的例子,确保了其功能的可靠性和实用性。下面我们将深入探讨如何在Android中进行zip文件的处理。 1. **Zip文件格式**: Zip是一种广泛使用的文件格式,...
(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,...
在Android平台上,对ZIP和RAR文件进行解压缩是常见的需求,比如在安装APK应用、更新资源文件或者处理用户上传的数据时。JavaAndroid可用的ziprar解压缩代码实现提供了这样的功能,但请注意,由于文件数量多,可能...
本文将深入探讨如何在Android平台上进行zip文件的解压缩操作。 首先,我们需要理解zip文件的基本概念。Zip是一种常用的文件格式,用于存储多个文件和目录在一个单一的、可压缩的档案中。在Android上,我们可以使用...
Android中的Zip解压缩----存在BUG(空文件夹压缩、解压缩会丢失,中文乱码)
在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...
`DemoZipUtils`是一个工具类,专门用于在Android平台上实现文件和文件夹的压缩与解压缩功能。下面将详细介绍这个工具类可能包含的关键知识点以及相关技术。 1. **ZIP文件格式**:ZIP是一种广泛使用的文件压缩格式,...
以上代码示例展示了如何在Android应用中进行Zip文件的解压缩和压缩操作。请注意,实际应用中可能需要考虑异常处理、多线程优化以及资源管理等细节问题。此外,如果对性能有较高要求,可以考虑使用第三方库如Apache ...
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
《AndroidZip4j:Java在Android上的压缩与解压缩库》 在移动开发领域,特别是在Android平台上,数据的压缩和解压缩是常见的需求。开发者常常需要处理大量的文件,例如资源包、更新包或者用户数据备份等,这时就需要...
标题和描述中提到的“unity解压缩zip包可用dll”,是指在Unity中用于解压缩ZIP文件的动态链接库(DLL)文件。 DLL(Dynamic Link Library)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的代码和...
Android Zip解压缩工具类分享 本文主要介绍了Android Zip解压缩工具类的实现,提供了详细的代码实现和解释,旨在帮助开发者更好地理解和使用 Zip解压缩工具类。 Zip解压缩工具类的重要性 在 Android 开发中,Zip ...
在Android开发中,有时我们需要处理压缩文件,例如解压或压缩数据。对于这种需求,可以使用各种库,其中`zip4j`是一个流行的开源框架,它提供了方便的API来处理ZIP文件,包括设置密码和显示进度条等功能。本文将详细...
通过研究这个项目的源码,开发者可以学习到Android的UI设计、事件处理、文件操作、权限管理、压缩解压缩技术以及如何在不同IDE之间迁移项目。这将有助于深化对Android开发的理解,并为实际项目开发积累经验。
3. **解压到目标目录**:调用`extractAll()`方法,将ZIP文件解压缩到指定的目录。 ```java String targetDir = "/path/to/destination/directory"; zipFile.extractAll(targetDir); ``` 在Android开发中,考虑到...
本文将详细介绍如何在Android和Java环境中实现zip和rar文件的解压缩。 首先,让我们关注zip文件。在Java中,`java.util.zip`包提供了对zip文件的支持。你可以使用`ZipInputStream`来读取zip文件,并通过`ZipEntry`...
5. **Zip压缩解压缩**: Zip文件格式是一种常见的压缩格式,用于减少文件大小便于存储和传输。在Android中,可以使用`java.util.zip`包中的`ZipInputStream`和`ZipOutputStream`类进行压缩和解压缩操作。同时,对于...