【问题标题】:Virtual Filesystem with C/C++ under Windows [closed]Windows下使用C/C++的虚拟文件系统[关闭]
【发布时间】:2011-06-13 13:56:43
【问题描述】:

我目前正在开发一款模拟操作系统的游戏。因此我需要一个游戏内文件系统。目前,我正在使用 zziplib 能够从 zip 存档中加载文件,但是这是一个只读的“文件系统”,我需要一种方法来编写新文件并在之后对其进行序列化(并在下次执行期间对其进行反序列化)!是否有任何有用的库可供使用,或者我应该根据任何库为自己编写一个?

【问题讨论】:

    标签: c++ filesystems zip virtualfilesystem


    【解决方案1】:

    这可能是使用简单数据库作为文件系统的地方之一。

    使用sqlite 之类的东西来存储数据(路径作为键,blob 作为数据,或类似的东西)。

    这样做的好处之一是您实际上不必担心存储问题,并且您可以使用现有的数据库工具“离线”查看/编辑数据,而不必自己编写。 (此外,您还可以在其中存储其他游戏信息。)

    【讨论】:

    • 当然。出于同样的原因,其他游戏也使用了 SQLite。
    • 我完全忘记了,我可能会使用 SQL,它确实非常酷并且可以轻松包含在内!谢谢提醒!
    【解决方案2】:

    您可以查看PicoStorageEmbedded File System in C++。我也没有直接使用过,但我都看过它们。 Embedded File System 确实有一个依赖项,它可能是一个阻碍——它需要链接 Qt。也许可以删除它,但它主要将它用于 QString 和 QFile(并且没有理由需要 UI)。

    9 年后更新:如评论所述,上述链接不再有效。 PicoStorage 的这个替代链接可能是可行的(我可以从那里下载源代码,但我没有努力验证它)但我找不到 EFS 的现代等效项。

    【讨论】:

    • Qt 作为依赖将是一个矫枉过正 - 我宁愿使用 sqlite!但感谢您提供的信息。
    • 截至今天,两个链接都已断开。
    【解决方案3】:

    我的六便士在上面的答案之上。 SolFS(现为 CBFS Storage)和CodebaseFS 提供虚拟文件系统功能;两者都有一个用于 C/C++ 的 API,并且似乎完全符合您的要求。不过……我还不清楚你的任务规模。您的游戏是否需要管理数十、数百、zounds ……的文件?这些文件的大小是多少?等等。在寻找合适的解决方案之前,我会提出这些问题。

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2010-11-24
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多