2011-05-29 59 views
4

對於我希望將文件集合一起存儲的應用程序,並將它們作爲單個文件顯示在文件系統中,以便於管理。我目前將所有內容存儲在一個文件夾中。在OSX上創建文件包

我想保持可訪問性,以便在必要時手動編輯內部內容。

做到這一點的一種方法是創建一個zip歸檔文件,然後給它一個自定義擴展名,然後是.zip。然後它會顯示爲一個文件類型,如果需要,您可以解壓並訪問內容,但對於正常使用,請將其隱藏。

我似乎無法找到一個方便的方法來做到這一點。 Boost和zlib可以進行壓縮,但不適用於檔案。我發現libzip,但我很難理解如何使用它,對我來說,它似乎只讀取/寫入zip壓縮文件而沒有進行實際的壓縮。

有沒有更方便的方法來解決這個問題?

你可以調用系統函數從C++/Carbon在OSX上創建存檔嗎?

是否有另一種方法使文件夾顯示爲單個文件?

+0

是否要從命令行或從您正在編寫的某些代碼中創建.zip存檔? – 2011-05-29 17:46:02

+0

來自代碼(C/C++)。請注意,我並不關心壓縮。我只想讓這些文件成爲捆綁包並同時保持可訪問性。 – 2011-05-29 17:51:11

回答

5

在OSX中,您可以創建Document Packages(類似於應用程序包),它們在Finder中被視爲單個文件,但實際上只是具有某種內部結構的目錄。

Apple不壓縮這些軟件包,但它們確實提供了您描述的功能,可以使用CFBundleRef通過CoreFoundation創建和訪問它們。

從文檔:

...記住有關創建一個文件包中的重要的事情是,它只是一個目錄。只要文檔包的類型已註冊(如「Registering Your Document Type」中所述),您所要做的就是創建一個具有適當文件擴展名的目錄。 (Finder使用文件擴展名作爲提示將目錄視爲一個包。)您可以使用標準BSD文件系統例程創建目錄(並創建任何要放入該目錄的文件)...

+0

謝謝。這似乎是要走的路。我的第一個目標平臺是Mac,但我更喜歡一種跨平臺的解決方案。有關於此的任何想法? – 2011-05-29 17:55:23

+0

我沒有任何其他平臺的經驗,所以我在那裏沒有太多的幫助。如果跨平臺是目標,那麼一個.zip檔案*可能是更好的選擇。要麼,要麼寫自己的二進制文件格式。 – 2011-05-29 18:01:16

+0

不錯。我不知道那件事。 – 2011-05-29 18:01:23

2

第一步,簡單重命名文件夾並添加擴展名.bundle,例如Myappdir.bundle

這會將整個文件夾顯示爲一個文件,並帶有類似lego的包圖標。

下一步是你必須在裏面創建一個Info.plist文件。