gpt4 book ai didi

go - Golang 中的大文件

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:52 25 4
gpt4 key购买 nike

我正在处理一个包含数百万个非常小的文件的应用程序,这变得很痛苦。很难转移。

所以,我想到了大文件或其他虚拟文件系统,它们可以创建一个大文件,包含我所有的索引数据。

在 golang 中如何处理这个问题?你有什么库可以推荐吗?

最佳答案

也许一个简单的 ZIP 存档(假设为零压缩)适合您?它有一个内容(文件流)的自然索引,所以当你 open it using archive/zip , 你回来 a slice of "file info blocks" ,每个都“知道”如何定位和读取其相应的文件流。(甚至有一种方法可以获取文件数据的偏移量,并读取它直接——绕过空操作“解压缩器”和校验和验证,所以你可以探索这种可能的速度调整,如果你的测量会显示访问该数据的速度“正常方式”将是次优的。)

然后您可以创建一个由文件名索引的 map 以便快速访问。

或者更进一步,创建此类 map 的层次结构模拟“自然”目录树。或者可能在文件系统树中有多个 ZIP 存档。


自然地,如果您想要的一切都是文件流 blob 的 r/o blob + 索引,那么您自己实现这将是一件相当简单的事情——无论是对于读取还是写入。如果你不太喜欢设计东西,我会看看 format of the Git "pack files" .

关于go - Golang 中的大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47918487/

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