标题并没有说明我在问什么,但我创建了一个算法,将一堆文件压缩成单个文件,然后再解压缩它们。为避免OutOfMemory异常,我使用两个fileStreams,首先从原始文件中读取数据段,然后使用另一个fileStream将这些段写入最终文件。C# - 我应该一次从FileStream读取多少个字节?
我在下面列出了我的代码摘录。在这种情况下,rStream和wStream已相应声明,并且bufferSize当前为16 mB。 fInfo是我们正在阅读的文件的文件信息。
显然,bufferSize越高,操作完成的速度越快。我想知道最大可能的bufferSize我应该用来最大化操作的效率?
int bytesRead = 0;
long toRead = fInfo.Length - curFileSize;
if (toRead > bufferSize) { toRead = bufferSize; }
byte[] fileSegment = new byte[toRead];
while (bytesRead < toRead)
{
bytesRead += rStream.Read(fileSegment, bytesRead, (int)toRead - bytesRead);
}
wStream.Seek(finalFileSize, SeekOrigin.Begin);
wStream.Write(fileSegment, 0, (int)toRead);
“显然,bufferSize越高,操作完成的速度越快”+“我最大可能使用的bufferSize的最大值是多少”==最大可用内存 – zerkms
您有多少内存? – peacemaker
16毫比特?我认为你的意思是MB而不是mB ...;) – Guffa