日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android压缩文件(压缩目录)

發布時間:2024/10/8 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android压缩文件(压缩目录) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址點擊打開鏈接

在Android中我們很多時候需要進行壓縮與解壓縮,就如本人的[ 足球即時比分 ]應用中也用到過.需要將一些信息進行收集再進行壓縮,最后將壓縮文件上傳到服務器中(如何上傳將文件上傳到服務器中可以看我另一篇帖子 :[?Android上傳文件到服務器?]).


??以下我的使用到的工具類的代碼.需要注意的是,進行壓縮與解壓縮都不支持中文名,如果需要支持中文名的話,一般是使用 Ant中的ZipInputStream與ZipOutStream,由于手機上使用ant的jar包的話,會令應用或游戲的大小變大很多,所以盡量小引入其它第三方的jar包的.

package rbase.app.nowscore.util;import java.io.InputStream;/** * Android Zip壓縮解壓縮 * @author ronald ([url]www.r-base.net[/url]) */ public final class ZipUtil {private ZipUtil(){}/*** 取得壓縮包中的 文件列表(文件夾,文件自選)* @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 {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 widgetszName = 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 zipFilePath 壓縮文件的名字* @param fileString 解壓文件的名字* @return InputStream* @throws Exception*/ public static java.io.InputStream upZip(String zipFilePath, String fileString)throws Exception {java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(zipFilePath);java.util.zip.ZipEntry zipEntry = zipFile.getEntry(fileString);return zipFile.getInputStream(zipEntry); }/** * 解壓一個壓縮文檔 到指定位置 * @param zipFileString 壓縮包的名字 * @param outPathString 指定的路徑 * @throws Exception */ public static void unZipFolder(InputStream input, String outPathString)throws Exception {java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(input);java.util.zip.ZipEntry zipEntry = null;String szName = "";while ((zipEntry = inZip.getNextEntry()) != null) {szName = zipEntry.getName();if (zipEntry.isDirectory()) {// get the folder name of the widgetszName = 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 filejava.io.FileOutputStream out = new java.io.FileOutputStream(file);int len;byte[] buffer = new byte[1024];// read (len) bytes into bufferwhile ((len = inZip.read(buffer)) != -1) {// write (len) byte from buffer at the position 0out.write(buffer, 0, len);out.flush();}out.close();}}//end of whileinZip.close();}/*** 解壓一個壓縮文檔 到指定位置* @param zipFileString 壓縮包的名字* @param outPathString 指定的路徑* @throws Exception*/public static void unZipFolder(String zipFileString, String outPathString)throws Exception {unZipFolder(new java.io.FileInputStream(zipFileString),outPathString);}//end of func/*** 壓縮文件,文件夾* * @param srcFilePath 要壓縮的文件/文件夾名字* @param zipFilePath 指定壓縮的目的和名字* @throws Exception*/public static void zipFolder(String srcFilePath, String zipFilePath)throws Exception {//創建Zip包java.util.zip.ZipOutputStream outZip = new java.util.zip.ZipOutputStream(new java.io.FileOutputStream(zipFilePath));//打開要輸出的文件java.io.File file = new java.io.File(srcFilePath);//壓縮zipFiles(file.getParent()+java.io.File.separator, file.getName(), outZip);//完成,關閉outZip.finish();outZip.close();}//end of func/*** 壓縮文件* @param folderPath* @param filePath* @param zipOut* @throws Exception*/private static void zipFiles(String folderPath, String filePath, java.util.zip.ZipOutputStream zipOut)throws Exception{if(zipOut == null){return;}java.io.File file = new java.io.File(folderPath+filePath);//判斷是不是文件if (file.isFile()) {java.util.zip.ZipEntry zipEntry = new java.util.zip.ZipEntry(filePath);java.io.FileInputStream inputStream = new java.io.FileInputStream(file);zipOut.putNextEntry(zipEntry);int len;byte[] buffer = new byte[4096];while((len=inputStream.read(buffer)) != -1) {zipOut.write(buffer, 0, len);}zipOut.closeEntry();} else {//文件夾的方式,獲取文件夾下的子文件String fileList[] = file.list();//如果沒有子文件, 則添加進去即可if (fileList.length <= 0) {java.util.zip.ZipEntry zipEntry = new java.util.zip.ZipEntry(filePath+java.io.File.separator);zipOut.putNextEntry(zipEntry);zipOut.closeEntry(); }//如果有子文件, 遍歷子文件for (int i = 0; i < fileList.length; i++) {zipFiles(folderPath, filePath+java.io.File.separator+fileList[i], zipOut);}//end of for}//end of if}//end of func }

總結

以上是生活随笔為你收集整理的Android压缩文件(压缩目录)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。