【问题标题】:Open source embedded filesystem (or single file virtual filesystem, or structured storage) library for C [closed]用于 C 的开源嵌入式文件系统(或单文件虚拟文件系统或结构化存储)库 [关闭]
【发布时间】:2010-02-25 19:06:31
【问题描述】:

我不确定这样的“通用”名称可能是什么。我正在寻找一个库,它为我提供了一种文件格式,可以将不同类型的二进制数据存储在一个扩展的单个文件中。

  • 开源,非 GPL (LGPL ok)
  • C 接口
  • 文件格式为单个文件
  • 使用类似 POSIX 的文件 API 中的多个文件(或使用其他 API 中的多个“blob”)
  • 文件/结构编辑在原地完成
  • 可靠第一,性能第二

示例包括:

以上问题:

  • whefs 似乎不是很成熟,但最能说明我的追求
  • HDF、CDF、NetCDF 都可用(也非常可靠和快速),但它们相当复杂,我不完全相信它们支持不透明的二进制“blob”

编辑:
忘了提另一个相关问题:
Simple Virtual Filesystem in C/C++
另一个类似的问题:
Is there an open-source alternative to Windows compound files?

编辑:
增加了就地编辑的条件。

编辑:
wifs 被取代:whio_epfs

【问题讨论】:

  • ROOT (root.cern.ch) 以 TFile 格式实现了这样的东西,但那是 c++。

标签: c open-source cross-platform filesystems compound-file


【解决方案1】:

这似乎符合我的要求:libgsf

仍然需要测试它的可靠性/性能以及二进制格式的跨平台程度。

【讨论】:

  • 不只是用于 gzip 之类的存档吗? libgsf 支持什么样的虚拟文件系统?
  • 它支持 GZip,但这里的用例更多是为了支持这种格式:msdn.microsoft.com/en-us/library/dd942138.aspx
  • 明白。最后一个问题:您如何看待 POLE?最后,libgsf 是否甚至创建了这样具有固定大小的 OLE 容器?
  • 我不熟悉这种格式,并且在 libgsf 文档中没有提到它。
  • SQLite (sqlite.org) 将以稳健的方式完成这项工作,如果您需要它,还可以添加关系酱。
【解决方案2】:

听起来您在谈论 Linux 环回设备,它可以让您将文件系统上的文件视为一流的块设备(然后继续进行 mkfs、挂载等)

(您的目标是哪种平台?功能齐全的类 Unix?嵌入式空间中占用空间小的东西?)

【讨论】:

  • 跨平台是本意。当然是 Windows 和嵌入式 Linux 版本。我考虑了环回设备,但没有提及它,因为我不确定它是否可以增大尺寸并且它在 Windows 上不起作用。
  • 对。如果我站在你的立场上,那么,我也会研究各种日志结构的文件系统,看看是否有一个具有可接受的许可证的系统,你可以将其破解到足以在用户空间中工作并处理文件为后备存储(而不是块设备)。
【解决方案3】:

WxWindows 库支持 ZIP 文件(请参阅 http://docs.wxwidgets.org/stable/wx_wxarc.html#wxarc). 这还有一个好处是您可以使用 ZIP 管理器(例如 WINZIP)查看内容。

一种商业替代品是 ChillKat (http://www.chilkatsoft.com/)

如果担心安全问题,请加密文件内容并破坏 ZIP 存档中的文件名。

【讨论】:

  • 安全不是问题。我没有过多研究普通存档类型,但我想知道它们在大型数据集、高速、内部文件内容的随机访问以及同时读写器方面的表现如何......
【解决方案4】:

【讨论】:

  • 好主意,但还不成熟。这取决于目前不稳定的 Eina。此外,它基本上存储了一个“块”的哈希映射,这需要一个额外的层来管理它们。
  • Ogg 容器格式在简单性上也与 Eet 非常相似:xiph.org/ogg/doc
【解决方案5】:

BerkeleyDB 呢?它不完全是一个文件系统,但在文件中存储“二进制数据”是非常透明的。许可证似乎也很宽松。

【讨论】:

  • 根据oracle.com/technology/software/products/berkeley-db/htdocs/… 的说法,它需要封闭源应用程序的商业许可证。另外,我不知道它比 SQLite 快多少,它比直接存储到文件要慢几倍。这是一个简单的测试,批量提交以存储数据。
  • 嗯,你没有提到你在做一个闭源应用程序。是的,它可能就像 SQLite,但在嵌入式方面还有几年的稳定性。
  • 抱歉,我的评论有误导性。当前的 BerkeleyDB 开源许可证类似于 GPL(例如,它需要发布您的整个应用程序源),违反了我在问题中提到的要求之一。
猜你喜欢
  • 2013-05-16
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
相关资源
最近更新 更多