我在 D 中编写了一个目录树扫描函数,它试图结合诸如 grep 和 file 之类的工具,并且只有当它不匹配一组指示文件类型(如 ELF、图像等)的魔术字节时,才有条件地 grep 文件中的内容。
在最小化文件 io 方面,使这种排除逻辑尽可能快地运行的最佳方法是什么?如果我只需要在开始时读取一些魔术字节,我通常不想读取整个文件。但是,为了使代码更具未来通用性(一些魔法可能位于末尾或其他地方而不是开头),如果我可以使用类似 mmap 的接口仅当我是读。数组接口也简化了我的算法。
在这种情况下, D 是std.mmfile
最佳选择吗?
更新:根据这篇文章,我想建议使用 mmap:http: //forum.dlang.org/thread/dlrwzrydzjusjlowavuc@forum.dlang.org
如果我只需要作为数组(opIndex)进行读取访问,使用std.mmfile
overstd.stdio.File
或有什么缺点std.file
吗?