在C#中寻找和写入大于2GB的文件

时间:2012-06-07 16:56:25

标签: c# filestream

在C#中,FileStream的方法读/写/搜索参数中的integer。在previous post中,我看到了一个很好的解决方案来读/写大于分配给进程的虚拟内存的文件。

如果您想从头到尾编写数据,此解决方案可以正常工作。但就我而言,我收到的数据块没有特别的顺序。

我的代码适用于小于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的文件中搜索和编写我的块?

2 个答案:

答案 0 :(得分:4)

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

你需要在任何地方使用long,而不是仅仅在某处使用int。

答案 1 :(得分:2)

writer.Seek((long)position*chunkSize, SeekOrigin.Begin);