引自
在本教程中,我將演示如何在ios程式中壓縮和解壓縮檔案。我們將使用乙個叫做ziparchive的第三方庫來實現。儘管壓縮和解壓縮有許多其他的方案可選,但是我覺得ziparchive庫是最快捷、最簡單的解決方案。let』s go。
為什麼我需要解壓縮檔案
有許多原因能解釋為什麼我要在工程中使用壓縮和解壓縮功能,下面是幾個常見的原因:
動態更新內容
工程設定
首先從google code上check out乙份**,svn位址是:
在終端中輸入如下命令即可check out了:
svn co
把minizip資料夾和ziparchive.h以及ziparchive.mm檔案新增到你的工程中。
因為ziparchive不支援arc,所以如果你的工程開啟了arc,那麼就需要對ziparchive設定一下。在ziparchive.mm編譯選項中,增加-fno-objc-arc即可。
最後,需要為工程鏈結libz動態鏈結庫。
至此,ziparchive已經整合到你的工程中了,編譯工程,應該可以編譯成功。可能會有一些警告,這無關緊要,不影響編譯。但是作為乙個態度嚴謹的程式設計師,我強烈建議你看一下這些警告是怎麼出現的,解決它們。請記住:在你的工程中,警告應該和錯誤一樣被嚴肅處理!
示例工程的執行效果如下圖:
好,接下來講一講具體的實現:
1.引入ziparchive的標頭檔案。
#import "ziparchive.h"
複製**
dispatch_queue_t queue = dispatch_get_global_queue(
dispatch_queue_priority_default, 0);
dispatch_async(queue, ^ [za unzipclosefile];
nsdata *imagedata = [nsdata datawithcontentsoffile:imagefilepath options:0 error:nil];
uiimage *img = [uiimage imagewithdata:imagedata];
nsstring *textstring = [nsstring stringwithcontentsoffile:textfilepath
encoding:nsasciistringencoding error:nil];
dispatch_async(dispatch_get_main_queue(), ^{
self.imageview.image = img;
self.label.text = textstring;
複製**
對上面的**做乙個簡單的解釋:
1. 在記憶體中解壓縮檔案
2. 將解壓縮的內容寫到快取目錄中
3. 使用解壓縮後的檔案
4. 更新ui
非常簡單吧!
壓縮檔案
接下來看一下怎麼進行檔案壓縮。在上面的步驟中,我們已經把乙個zip檔案解壓縮到快取目錄中。現在我們再把解壓縮出來的檔案重新壓縮為乙個zip檔案,並把這個zip檔案寫入到documents目錄裡去(omg,這兩個檔案太慘了,被反覆蹂躪)
在示例工程**中,我已經增加了乙個按鈕,並和乙個ibaction相關聯,按鈕的處理函式名為zipfilesbuttonpressed:,具體**如下:
- (ibaction)zipfilesbuttonpressed:(id)sender
nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);
nsstring *docspath = [paths objectatindex:0];
paths = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes);
nsstring *cachepath = [paths objectatindex:0];
ziparchive *za = [[ziparchive alloc] init];
[za createzipfile2:zipfile];
[za addfiletozip:imagepath newname:@"newphotoname.png"];
[za addfiletozip:textpath newname:@"newtextname.txt"];
bool success = [za closezipfile2];
nslog(@"zipped file with result %d",success);
複製**
簡單解釋一下上面**的意思:
1. 獲取documents目錄,新的zip檔案要寫入到這個目錄裡。
2. 獲取caches目錄,要進行壓縮的檔案在這個目錄裡。
3. 獲取zip檔案的全路徑名。
4. 建立乙個ziparchive例項,並建立乙個記憶體中的zip檔案。需要注意的是,只有當你呼叫了closezipfile2方法之後,zip檔案才會從記憶體中寫入到磁碟中去。
5. 獲取要被壓縮的檔案的全路徑
6. 把要壓縮的檔案加入到zip物件中去,加入的檔案數量沒有限制,也可以加入資料夾到zip物件中去。
7. 把zip從記憶體中寫入到磁碟中去。
當點選按鈕之後,在應用的documents資料夾下應該有乙個叫newzipfile.zip的檔案。解壓這個檔案,就能解壓出那兩個被反覆蹂躪的檔案來
結論現在你知道如何使用ziparchive來壓縮和解壓縮檔案了。享受ziparchive的便利吧。示例工程已經很好的展示了這些基本用法,大家可以好好研究下。
iOS中使用鑰匙串
2014 05 05 22 40 7534人閱讀收藏 舉報 檔案保護用來保護 資料 而鑰匙串則用來保護 秘密 在這裡,秘密是指用來訪問其他資料的一小段資料。最常見的秘密就是密碼和私鑰了。鑰匙串中的條目都有幾個可搜尋的 屬性 和乙個加密過的 值 對於通用密碼條目,比較重要的屬性有賬戶 ksecattr...
在 iOS 中使用 iconfont
在講icon font之前,首先先來看看普通自定義字型是如何在ios中使用的,兩個原理是一樣的。這裡以kaushanscript regular為例 step 1 匯入字型檔案 將字型檔案拖入專案 ios支援的字型格式有 ttf otf,其他格式不確定 然後再在專案的資源池中確認字型檔案是否加入專案...
在iOS中使用icon font
在開發阿里資料ios版客戶端的時候,由於專案進度很緊,專案裡的所有圖示都是用最平常的背景方案來實現。而為了要相容普通屏與retina屏的裝置,蘋果要求每個背景圖都要以兩種尺寸存 閱讀器 icon font ios 在開發阿里資料ios版客戶端的時候,由於專案進度很緊,專案裡的所有圖示都是用最平常的背...