3

在 C# 中,FileStream的方法 Read/Write/Seek 接受integer参数。在上一篇文章中,我看到了一个很好的解决方案来读取/写入大于分配给进程的虚拟内存的文件。

如果您想从头到尾写入数据,则此解决方案有效。但就我而言,我收到的数据块没有特定的顺序。

我有一个适用于小于 2GB 的文件的代码:

private void WriteChunk(byte[] data, int position, int chunkSize, int count, string path)
    {

        FileStream destination = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
        BinaryWriter writer = new BinaryWriter(destination);
        writer.Seek((int) (position*chunkSize), SeekOrigin.Begin);
        writer.Write(data, 0, count);
        writer.Close();
    }

有没有办法可以在大于 2GB 的文件中查找和写入我的块?

4

2 回答 2

4

不要使用int,使用long。寻找需要很长时间。

不过,您需要在任何地方使用 long ,而不仅仅是在某个地方强制转换为 int 。

于 2012-06-07T16:58:09.420 回答
2
writer.Seek((long)position*chunkSize, SeekOrigin.Begin);
于 2012-06-07T16:58:34.107 回答