标题并没有使我的要求变得那么明显,但是我创建了一种算法,可以将一堆文件压缩成一个文件,然后再次解压缩它们。为了避免 OutOfMemory 异常,我使用了两个 fileStreams,首先从原始文件中读取数据段,然后另一个 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);