Android Zip压缩解压缩
来源:互联网 发布:人机对话英语软件 编辑:程序博客网 时间:2024/04/29 12:56
/** * 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 { } }
公共方法列表
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 : 输出压缩包的路径
0 0
- Android Zip压缩解压缩
- Android Zip压缩解压缩
- Android Zip压缩解压缩
- Android Zip压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩!!!!!!!!!!!
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- Android zip文件压缩解压缩
- android压缩解压缩zip文件格式
- Android zip文件压缩解压缩
- linux建立信任关系简易方法
- python minidom 处理XML
- 网页爬虫的基本框架
- jdbc连接数据库的步骤2
- vs上的deque貌似是个坑
- Android Zip压缩解压缩
- ASIHTTPRequest
- HTTPServlet详解
- 街头篮球解封器丨辅助挂代码 - 分享不断,活动不断!
- QT程序打包发布 - 免安装
- Serializable(序列化)
- JavaScript Window Navigator
- Oracle索引相关介绍
- register---C语言中最快的关键字