用于C的开源嵌入式文件系统(或单文件虚拟文件系统,或结构化存储)库

用于C的开源嵌入式文件系统(或单文件虚拟文件系统,或结构化存储)库,c,open-source,cross-platform,filesystems,compound-file,C,Open Source,Cross Platform,Filesystems,Compound File,我不确定这类东西的“通用”名称是什么。我正在寻找一个库,它为我提供了一种文件格式,可以在扩展的单个文件中存储不同类型的二进制数据 开源,非GPL(LGPL ok) C接口 文件格式为单个文件 使用类似于POSIX的文件API中的多个文件(或使用其他API中的多个“blob”) 文件/结构编辑已到位 可靠第一,性能第二 例子包括: 虚拟机的虚拟驱动器 上述问题: whefs看起来不是很成熟,但最能描述我所追求的 HDF、CDF、NetCDF都是可用的(也非常可靠和快速),但它们相

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

  • 开源,非GPL(LGPL ok)
  • C接口
  • 文件格式为单个文件
  • 使用类似于POSIX的文件API中的多个文件(或使用其他API中的多个“blob”)
  • 文件/结构编辑已到位
  • 可靠第一,性能第二
例子包括:

  • 虚拟机的虚拟驱动器
上述问题:

  • whefs看起来不是很成熟,但最能描述我所追求的
  • HDF、CDF、NetCDF都是可用的(也非常可靠和快速),但它们相当复杂,我不完全相信它们支持不透明的二进制“blob”
编辑:
忘了提及另一个相关问题:

另一个类似的问题:

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

编辑:

whefs被取代:

听起来像是在谈论Linux环回设备,它允许您将文件系统上的文件视为一级块设备(然后继续进行mkfs、mount等)


(您的目标是什么样的平台?功能齐全的Unixlike?嵌入式空间中占用空间小的东西?

WxWindows库支持ZIP文件(请参阅)。 这还有一个优点,即您可以使用ZIP管理器(例如WINZIP)查看内容

商业替代品是ChillKat()


如果出于安全考虑,请加密文件内容并损坏ZIP存档中的文件名。

这似乎符合我的要求:


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

可能是启蒙项目的Eet库


那怎么办?它不完全是一个文件系统,但在文件中存储“二进制数据”是非常透明的。许可证似乎也是非常允许的。

跨平台是目的。当然是Windows和嵌入式Linux版本。我考虑过环回设备,但没有提及它,因为我不确定它是否能以更大的规模增长如果我站在你的立场,那么我也会研究各种日志结构的文件系统,看看是否有一个具有可接受的许可证的文件系统,你可以在userland中很好地破解它,并将文件作为备份存储(而不是块设备).安全性不是一个问题。我没有过多地研究常规归档类型,但我想知道它们在大数据集、高速、随机访问内部文件内容以及同步读写器方面的性能如何…ROOT()以TFLE格式实现这样的东西,但这是C++。不错的想法,但还不成熟。这取决于埃纳目前不稳定。它基本上存储了“块”的哈希图。,这需要一个额外的层来管理它们。Ogg容器格式在简单性上也与Eet非常相似:据我所知,它需要封闭源代码应用程序的商业许可证。此外,我不知道它比SQLite快多少,后者比直接存储到文件慢几倍。这是一个简单的测试,批处理commit用于存储数据。您没有提到您正在开发一个封闭源代码的应用程序。是的,它可能类似于SQLite,但在嵌入式方面还具有几年的稳定性。对不起,我的评论有误导性。当前的BerkeleyDB开源许可证类似于GPL(如中所述,它要求发布您的整个应用程序源代码),违反了我在问题中提到的一个要求。这不只是像gzip这样的存档吗?libgsf支持什么样的虚拟文件系统?它支持gzip,但这里的用例更多的是支持这种格式:理解。最后一个问题:您对POLE有何看法?libgsf甚至创建了这样的OLE容器并进行了修复吗最后是ed大小?我不熟悉这种格式,在libgsf docs中也没有提到它。SQLite()将以一种健壮的方式完成这项工作,如果您需要,还将添加关系酱。