Android zip文件压缩解压缩

Android zip文件压缩解压缩:

/**    * 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 {                    }       }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygpdy.html