Android實(shí)現(xiàn)文件或文件夾壓縮成.zip格式壓縮包
本文實(shí)例為大家分享了Android壓縮文件和文件夾的方法,供大家參考,具體內(nèi)容如下
/**
* 壓縮文件和文件夾
*
* @param srcFileString 要壓縮的文件或文件夾
* @param zipFileString 壓縮完成的Zip路徑
* @throws Exception
*/
public static void ZipFolder(String srcFileString, String zipFileString) throws Exception {
//創(chuàng)建ZIP
ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));
//創(chuàng)建文件
File file = new File(srcFileString);
//壓縮
LogUtils.LOGE("---->"+file.getParent()+"==="+file.getAbsolutePath());
ZipFiles(file.getParent()+ File.separator, file.getName(), outZip);
//完成和關(guān)閉
outZip.finish();
outZip.close();
}
/**
* 壓縮文件
*
* @param folderString
* @param fileString
* @param zipOutputSteam
* @throws Exception
*/
private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam) throws Exception {
LogUtils.LOGE("folderString:" + folderString + "\n" +
"fileString:" + fileString + "\n==========================");
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();
//沒有子文件和壓縮
if (fileList.length <= 0) {
ZipEntry zipEntry = new ZipEntry(fileString + File.separator);
zipOutputSteam.putNextEntry(zipEntry);
zipOutputSteam.closeEntry();
}
//子文件和遞歸
for (int i = 0; i < fileList.length; i++) {
ZipFiles(folderString+fileString+"/", fileList[i], zipOutputSteam);
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程實(shí)現(xiàn)獲取當(dāng)前系統(tǒng)語(yǔ)言及地區(qū)并更改語(yǔ)言的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)獲取當(dāng)前系統(tǒng)語(yǔ)言及地區(qū)并更改語(yǔ)言的方法,涉及Android針對(duì)系統(tǒng)語(yǔ)言及地區(qū)的獲取與設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Android之Notification的多種用法實(shí)例
本篇文章主要介紹了Android之Notification的多種用法實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Android屏幕旋轉(zhuǎn) 處理Activity與AsyncTask的最佳解決方案
運(yùn)行時(shí)變更就是設(shè)備在運(yùn)行時(shí)發(fā)生變化(例如屏幕旋轉(zhuǎn)、鍵盤可用性及語(yǔ)言)。發(fā)生這些變化,Android會(huì)重啟Activity,這時(shí)就需要保存activity的狀態(tài)及與activity相關(guān)的任務(wù),以便恢復(fù)activity的狀態(tài)。為此,google提供了三種解決方案,本文將對(duì)這三種方案進(jìn)行逐一介紹。2016-12-12
Android中NavigationView的使用與相關(guān)問題解決
大家都知道NavigationView的引入讓 Android側(cè)邊欄實(shí)現(xiàn)起來相當(dāng)方便,最近公司項(xiàng)目中也使用這個(gè)新的控件完成了側(cè)邊欄的改版。在使用過程中遇到一些問題所以記錄一下。本文分為兩個(gè)部分,一是基本使用,二是相關(guān)問題的解決,感興趣的朋友們下面來一起看看吧。2016-10-10
Android ScrollView實(shí)現(xiàn)反彈效果的實(shí)例
這篇文章主要介紹了 Android ScrollView實(shí)現(xiàn)反彈效果的實(shí)例的相關(guān)資料,這里自定義scrollview 并實(shí)現(xiàn)反彈效果,需要的朋友可以參考下2017-07-07
Flutter?Android多窗口方案落地實(shí)戰(zhàn)
這篇文章主要為大家介紹了Flutter?Android多窗口方案落地實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android實(shí)現(xiàn)QQ的第三方登錄和分享
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)QQ的第三方登錄和分享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Android studio利用gradle打jar包并混淆的方法詳解
昨天準(zhǔn)備把寫好的代碼使用gradle打jar包出來,并打算加混淆。打jar包容易,結(jié)果在混淆上走了彎路。所以這篇文章主要介紹了關(guān)于Android studio利用gradle打jar包并混淆的方法,需要的朋友可以參考下。2017-03-03
Android應(yīng)用中加入微信分享簡(jiǎn)單方法
這篇文章主要介紹了Android應(yīng)用中加入微信分享簡(jiǎn)單方法,本文用簡(jiǎn)潔明快的步驟講解了加入微信分享的方法,需要的朋友可以參考下2015-05-05

