gpt4 book ai didi

file - 如何读取文件而不将其加载到内存中,例如 D 中的 Delphi TFileStream 类?

转载 作者:行者123 更新时间:2023-12-03 18:59:48 25 4
gpt4 key购买 nike

我在某处读到 std.stdio 的文件将文件加载到内存中,然后读取它。我来自 Delphi,那里有一个 TFileStream 类,可以用来读/写文件,而不需要将它们加载到内存中。在写/读时,我不必担心行尾或任何特殊字符,我可以提供我想读/写的字节数,甚至可以读/写字节数组,我不确定 std.stdio.File 有没有。

D也可以吗?我只想从我提供的位置从文件中读取一些字节,而不将整个文件加载到内存中(文件非常大)?如果是,那么如何?还有一件事,我必须将文件读取到 ubytes(0-255) 数组

P.S:该方法应该适用于Linux,Windows不是我的目标;

最佳答案

D 标准库中的任何模块都不会按照您所说的“在某处读过”。但是,std.file 中有一个函数可用于读取整个文件的模块 - read() function .这个函数有签名void[] read(R)(R name, size_t upTo = size_t.max)并可用于读取最多字节数。自然,如果您省略 upTo 参数,它将读取整个文件(或填满您的内存!)。

正如 Richard 所建议的,使用 File来自 std.stdio 模块的包装器来执行任意的 seek() 和 read() 操作。

如果您的文件很大,最好使用 std.mmfile .它非常方便,允许您像处理切片(数组)一样处理内存映射文件... Related SO thread

关于file - 如何读取文件而不将其加载到内存中,例如 D 中的 Delphi TFileStream 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621616/

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