在 C# 中,FileStream
的方法 Read/Write/Seek 采用integer
在参数中。在一个上一篇文章 https://stackoverflow.com/questions/5654298/filestream-read-write-methods-limitation,我看到了一个很好的解决方案,可以读取/写入大于分配给进程的虚拟内存的文件。
如果您想从头到尾写入数据,则此解决方案有效。但就我而言,我收到的数据块没有特定的顺序。
我有一个适用于小于 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 的文件中查找和写入我的块?
不要使用int,使用long。寻找需要很长时间。
但你需要在任何地方使用 long 而不仅仅是在某个地方转换为 int 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)