在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的文件中搜索和编写我的块?
答案 0 :(得分:4)
不要使用int,请使用long。寻求需要很长时间。
你需要在任何地方使用long,而不是仅仅在某处使用int。
答案 1 :(得分:2)
writer.Seek((long)position*chunkSize, SeekOrigin.Begin);