2011-08-17 61 views
0

基本上當我解壓縮已存儲在OSX獅子一個文件,我得到的zip文件名與foler裏面的文件的文件夾...OSX獅子libz進行解壓縮文件的結構變化

所以解鏈的壓縮文件。 zip給我的文件夾'zipfile'裏面有3個文件。

1. zipfile.zip 
2. zipfile 
    ->file1 
    ->file2 
    ->file3 

如果已創建/ OSX中使用豹,我得到了3個文件解壓縮,但不是在文件夾「的壓縮文件」,而在同一個目錄中的zip文件。

所以父文件夾結構「應該」的樣子:

1. zipfile.zip 
2. file1 
3. file2 
4. file3 

在OSX的獅子,如果我複製(或創建)我file.zip,並使用其解壓到我的Xcode項目ZipArchive.mm

通過調用

-(BOOL) UnzipOpenFile:(NSString*) zipFile 

,並檢查日誌中:

NSLog([NSString stringWithFormat:@"%d entries in the zip file",globalInfo.number_entry]); 

我在zip文件中得到'10條目。'

如果我在OSX Leopard中執行同樣的操作,我會得到zip文件中的6個條目。

我不是很確定'globalInfo.number_entry'應該是什麼意思,文件屬性?

爲什麼在OSX Lion中處理zip文件的方式有所不同?基本上,這意味着我必須將我的項目複製到Snow Leopard機器上進行構建並使用從未在OSX Lion操作系統上執行過的zipfile.zip,該操作系統以某種方式更改了屬性,導致解壓縮到改變,導致我的項目中斷。

任何人都知道我在這裏得到什麼?這樣一個小小的變化,卻是一個巨大的問題。

從獅子當我輸出的zip文件的結構,我有:

filename: zipfile/ 
filename: zipfile/.DS_Store 
filename: __MACOSX/ 
filename: __MACOSX/zipfile/ 
filename: __MACOSX/zipfile/._.DS_Store 
filename: zipfile/file1.db 
filename: zipfile/file2.db 
filename: __MACOSX/zipfile/._file2.db 
filename: zipfile/suburbs.db 
filename: __MACOSX/zipfile/._file3.db 

而從OSX Leopard的

file1.db 
file2.db 
__MACOSX/ 
__MACOSX/._file2.db 
file3.db 
__MACOSX/._file3.db 
+0

'ZipArchive.mm'從哪裏來? –

+0

ZipArchive是一個使用winzip庫進行壓縮和解壓縮的包裝器,有可能代碼假定文件結構將保持不變,並且已被無聲地破壞或者我們會說混淆。但從來沒有那麼少,最好在更改壓縮和解壓縮過程之前瞭解OSX Lion對文件結構的要求 –

+0

http://code.google.com/p/ziparchive/source/checkout這裏是我從ZipArchive獲取ZipArchive的地方 –

回答

1

大畫面,我猜你已經得到了兩個不同的.zip文件,而不是一個,它們的創建方式不同。

一方面,您選擇了三個文件,右鍵單擊並選擇「壓縮3個項目」。

另外,你選擇了一個文件夾,選擇「壓縮(文件夾名)」

每個條目的全路徑名被存儲於zip文件目錄,也不會神奇地消失。

如果你確實是從兩臺機器上的完全相同的zip文件開始,那麼我會抓取一個真正的解壓縮工具(在/ usr/bin /中可能已有一個)的副本,並使用'/ usr/bin/unzip -l zip file.zip'命令查看存檔內部的內容,而不擴展它。

+0

是的,問題出在zip文件的結構中,創建zip文件的人做了不同的處理,導致了混淆,導致我找到了故障排除的途徑,這實際上只是問題的複雜性。在使用正確的文件結構以新鮮的zip進行Clean + Build後,我們意識到這是真正的事情。 –