研究了一下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 自带zip解压缩中文乱码的问题,导入zip.jar即可使用(与系统提供的用法相同),大小仅24k
(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip(安卓APP项目源代码)文件管理器源码,文件拖曳,list弹性,...
javaandroid可用的ziprar解压缩代码实现.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android中的Zip解压缩----存在BUG(空文件夹压缩、解压缩会丢失,中文乱码)
Android的zip解压缩例子,仅供参考学习,如有改进请提出。
Android项目文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.rar
基于zip4j开源框架实现android解压带有密码的zip文件(进度条显示),项目中有jar包,非常好用。解压、压缩、压缩添加密码、解压带有密码的zip都可以使用。
文件管理器源码,文件拖曳,list弹性,root ,zip压缩解_Android
找了很久的解决android(java也行)上zip、rar压缩文件解压缩的代码 ,在自己项目中试了很不错。
Android 解压缩工具 ZArchiver Pro 中文版Android 解压缩工具 ZArchiver Pro 中文版 ZArchiver Pro 的优点: – 白色与黑暗主题; – 密码存储; – 存档中的图像预览; – 编辑档案中的文件(请参见注释); ...
NULL 博文链接:https://hzy3774.iteye.com/blog/1704419
主要介绍了Android实现zip文件压缩及解压缩的方法,涉及Android针对文件的遍历及zip压缩与解压缩的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
主要为大家详细介绍了Android Zip解压缩工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip
unity解压缩zip包工具。内含unity可用的dll。 包括net3.5可用库和net4.0可用库。 亲测PC端可用。 亲测IOS及Android端可用。
文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip项目安卓应用源码下载文件管理器源码,文件拖曳,list弹性,root ,zip压缩解.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3....
Winrar for Android 是来自 RARLAB 的官方版本,是 PC 端 winrar 的姐妹,支持创建RAR和ZIP压缩文件,能够轻松解压 RAR, RAR5, ZIP, TAR, GZ, BZ2, XZ, 7z, ISO, ARJ 等格式的文件,是手机端不可多得的神器!...