gpt4 book ai didi

java - 使用 Java 库的随机访问结构化存档文件格式

转载 作者:行者123 更新时间:2023-12-01 15:00:13 25 4
gpt4 key购买 nike

我和我的团队需要一种具有 Java 库支持的文件格式,该格式保存有关某个较大文件的各种元数据。事实上,当权者希望我们将大文件(可能 100MB)和其他相关文件(元数据、非破坏性编辑等)打包到一个捆绑的存档文件中。

对于一次性创作来说,这是一件轻而易举的事:只需将所有内容放入 Zip 文件中即可。但我们希望能够不断更新元数据、非破坏性编辑等。我们不想将整个 >100MB 的内容转储到临时目录,然后将所有内容压缩备份,只是为了向其中一个目录添加一行。元数据文件。

有一些项目(例如 TrueVFS )表面上听起来很理想,声称将 zip 文件或其他存档文件格式抽象为文件系统。但经过仔细检查,我们获得的唯一就地更新功能似乎很简单 appending new files而实际上并没有更改或附加到单个文件。

我们需要的是介于 Zip 文件和关系数据库之间的某种文件格式。具有层次结构的东西会很棒。它必须有效地支持相当大的文件(超过 100MB),并允许随机访问以添加、删除和更改存档中的单个文件。我很惊讶找不到任何东西。有什么建议吗?

附注几年前我在 Microsoft compound file format 上有过不好的经历。被损坏。我不知道是否像 Apache POIFS对于大文件来说可靠且高效。

最佳答案

我不认为您所要求的事情很容易实现,原因很简单:文件系统通常不支持在文件中间插入数据 - 除非截断和重写其余部分。这意味着当该文件存储在存档中时,普通文件上的简单追加会变成截断重写操作。

您必须找到某种基于 block 的格式,该格式本质上可以复制实际文件系统的大部分功能,以便允许此类操作。

我会考虑重构整个系统,以在该大数据文件上强制执行某些结构。这将允许您将其转换为可以存储在数据库中的内容。例如,基于行的文本可以存储在具有两列的表中 - 作为主键的行号和行文本。任何基于行的操作都可以轻松转变为基于数据库的操作。

然后您可以只使用嵌入式数据库,例如 SQLite将所有内容保存在同一个文件中,而不依赖于外部服务器。

关于java - 使用 Java 库的随机访问结构化存档文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com