gpt4 book ai didi

c# - FileStream,从大文件中读取数据 block 。文件大小大于 int。如何设置偏移量?

转载 作者:太空狗 更新时间:2023-10-29 22:20:18 24 4
gpt4 key购买 nike

FileStream.Read() 定义为:

public override int Read(
byte[] array,
int offset,
int count
)

如何从大于 int.MaxValue 的偏移量读取一些字节?

假设我有一个非常大的文件,我想从位置 3147483648 开始读取 100MB。

我该怎么做?

最佳答案

此处的offset数组中 开始写入的偏移量。在您的情况下,只需设置:

stream.Position = 3147483648;

然后使用Read()。当您知道需要读取 [n] 个字节时,最常使用 offset:

int toRead = 20, bytesRead;
while(toRead > 0 && (bytesRead = stream.Read(buffer, offset, toRead)) > 0)
{
toRead -= bytesRead;
offset += bytesRead;
}
if(toRead > 0) throw new EndOfStreamException();

这将恰好将 20 个字节读入 buffer(或抛出异常)。请注意,Read() 不能保证一次读取所有需要的数据,因此通常需要一个递增偏移量的循环。

关于c# - FileStream,从大文件中读取数据 block 。文件大小大于 int。如何设置偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107586/

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