diff --git a/appmain/stream/ZipUtils.java b/appmain/stream/ZipUtils.java deleted file mode 100644 index 2e1a58b..0000000 --- a/appmain/stream/ZipUtils.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.proxgrind.chameleon.utils.stream; - -import android.util.Log; - -import java.io.File; -import java.io.FileFilter; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FilenameFilter; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.zip.ZipInputStream; -import java.util.zip.ZipOutputStream; - -public class ZipUtils { - public static final String TAG = "ZIP"; - - private ZipUtils() { - - } - - /** - * 解压zip到指定的路径 - * - * @param zipFileString ZIP的名称 - * @param outPathString 要解压缩路径 - * @throws Exception - */ - public static void unZipFolder(String zipFileString, String outPathString) throws Exception { - ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString)); - ZipEntry zipEntry; - String szName = ""; - while ((zipEntry = inZip.getNextEntry()) != null) { - szName = zipEntry.getName(); - if (zipEntry.isDirectory()) { - //获取部件的文件夹名 - szName = szName.substring(0, szName.length() - 1); - File folder = new File(outPathString + File.separator + szName); - folder.mkdirs(); - } else { - Log.e(TAG, outPathString + File.separator + szName); - File file = new File(outPathString + File.separator + szName); - if (!file.exists()) { - Log.e(TAG, "Create the file:" + outPathString + File.separator + szName); - file.getParentFile().mkdirs(); - file.createNewFile(); - } - // 获取文件的输出流 - FileOutputStream out = new FileOutputStream(file); - int len; - byte[] buffer = new byte[1024]; - // 读取(字节)字节到缓冲区 - while ((len = inZip.read(buffer)) != -1) { - // 从缓冲区(0)位置写入(字节)字节 - out.write(buffer, 0, len); - out.flush(); - } - out.close(); - } - } - inZip.close(); - } - - public static void unZipFolder(String zipFileString, String outPathString, String szName) throws Exception { - ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString)); - ZipEntry zipEntry; - while ((zipEntry = inZip.getNextEntry()) != null) { - //szName = zipEntry.getName(); - if (zipEntry.isDirectory()) { - //获取部件的文件夹名 - szName = szName.substring(0, szName.length() - 1); - File folder = new File(outPathString + File.separator + szName); - folder.mkdirs(); - } else { - Log.e(TAG, outPathString + File.separator + szName); - File file = new File(outPathString + File.separator + szName); - if (!file.exists()) { - Log.e(TAG, "Create the file:" + outPathString + File.separator + szName); - file.getParentFile().mkdirs(); - file.createNewFile(); - } - // 获取文件的输出流 - FileOutputStream out = new FileOutputStream(file); - int len; - byte[] buffer = new byte[1024]; - // 读取(字节)字节到缓冲区 - while ((len = inZip.read(buffer)) != -1) { - // 从缓冲区(0)位置写入(字节)字节 - out.write(buffer, 0, len); - out.flush(); - } - out.close(); - } - } - inZip.close(); - } - - /** - * 压缩文件和文件夹 - * - * @param srcFileString 要压缩的文件或文件夹 - * @param zipFileString 压缩完成的Zip路径 - * @throws Exception - */ - public static void zipFolder(String srcFileString, String zipFileString, FilenameFilter filter) throws Exception { - //创建ZIP - ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString)); - //创建文件 - File file = new File(srcFileString); - //压缩 - zipFiles(file.getParent() + File.separator, file.getName(), outZip, filter); - //完成和关闭 - outZip.finish(); - outZip.close(); - } - - /** - * 压缩文件 - * - * @param folderString - * @param fileString - * @param zipOutputSteam - * @throws Exception - */ - private static void zipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam, FilenameFilter filter) throws Exception { - if (zipOutputSteam == null) - return; - File file = new File(folderString + fileString); - if (file.isFile()) { - ZipEntry zipEntry = new ZipEntry(fileString); - FileInputStream inputStream = new 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(filter); - if (fileList != null) { - //没有子文件和压缩 - if (fileList.length <= 0) { - ZipEntry zipEntry = new ZipEntry(fileString + File.separator); - zipOutputSteam.putNextEntry(zipEntry); - zipOutputSteam.closeEntry(); - } - //子文件和递归 - for (String s : fileList) { - zipFiles(folderString, fileString + File.separator + s, zipOutputSteam, filter); - } - } - } - } - - /** - * 返回zip的文件输入流 - * - * @param zipFileString zip的名称 - * @param fileString ZIP的文件名 - * @return InputStream - * @throws Exception - */ - public static InputStream upZip(String zipFileString, String fileString) throws Exception { - ZipFile zipFile = new ZipFile(zipFileString); - ZipEntry zipEntry = zipFile.getEntry(fileString); - return zipFile.getInputStream(zipEntry); - } - - /** - * 返回ZIP中的文件列表(文件和文件夹) - * - * @param zipFileString ZIP的名称 - * @param bContainFolder 是否包含文件夹 - * @param bContainFile 是否包含文件 - * @return - * @throws Exception - */ - public static List getFileList(String zipFileString, boolean bContainFolder, boolean bContainFile) throws Exception { - List fileList = new ArrayList(); - ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString)); - ZipEntry zipEntry; - String szName; - while ((zipEntry = inZip.getNextEntry()) != null) { - szName = zipEntry.getName(); - if (zipEntry.isDirectory()) { - // 获取部件的文件夹名 - szName = szName.substring(0, szName.length() - 1); - File folder = new File(szName); - if (bContainFolder) { - fileList.add(folder); - } - } else { - File file = new File(szName); - if (bContainFile) { - fileList.add(file); - } - } - } - inZip.close(); - return fileList; - } -}