对于一个应用程序,我想将一组文件存储在一起,并将它们作为单个文件出现在文件系统中,以便于管理。我目前将所有内容存储在一个文件夹中。
我想保持可访问的内容,以便您可以根据需要手动编辑内部内容。
执行此操作的一种方法是创建一个zip存档,并为其提供除.zip之外的自定义扩展。然后它显示为文件类型,如果需要,您可以解压缩并访问内容,但是为了正常使用,请将其隐藏起来。
我似乎找不到方便的方法来做到这一点。 Boost和zlib可以进行压缩,但不能与归档一起使用。我找到了libzip,但我很难理解如何使用它,对我而言,似乎它只读取/写入zip存档而不进行实际压缩。
有没有更方便的方法解决这个问题?
您是否可以调用系统函数来从c ++ / Carbon在OSX上创建存档?
是否有另一种方法可以使文件夹显示为单个文件?
答案 0 :(得分:5)
在OSX中,您可以创建Document Packages(类似于应用程序包),它们在Finder中被视为单个文件,但实际上只是具有某种内部结构的目录。
Apple不会压缩这些软件包,但它们确实提供了您描述的功能,可以使用CFBundleRef通过CoreFoundation创建和访问它们。
来自文档:
...关于创建文档包的重要一点是它只是一个目录。只要注册了文档包的类型(如“Registering Your Document Type”中所述),您所要做的就是创建一个具有相应文件扩展名的目录。 (Finder使用文件扩展名作为其提示将目录视为包。)您可以使用标准BSD文件系统例程创建目录(并创建要放在该目录中的任何文件)...
答案 1 :(得分:3)
作为第一步,简单地重命名该文件夹并添加扩展名.bundle
,例如Myappdir.bundle
这会将整个文件夹显示为一个带有lego-like捆绑图标的文件。
下一步是你必须在里面创建一个Info.plist文件。