在C#中处理文件时确定缓冲区大小?

时间:2013-08-13 11:03:46

标签: c# .net c#-4.0 io

我有这个简单的代码,它将文本文件合并到一个文本文件中:

void Main()
{
const int chunkSize = 2 * 1024; // 2KB
var inputFiles = new[] { @"c:\1.txt", @"c:\2.txt", @"c:\3.txt" };
using (var output = File.Create(@"c:\output.dat"))
{
    foreach (var file in inputFiles)
    {
        using (var input = File.OpenRead(file))
        {
            var buffer = new byte[chunkSize];
            int bytesRead;
            while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                output.Write(buffer, 0, bytesRead);
            }
        }
    }
}
}

我的问题是关于chunkSize尺寸。

我怎么知道我选择的号码是否合适? (1024 * 2)

我正试图找到空闲的公式:

假设每个文件大小为F mb,并且我有R mb的Ram且我的Hd的块大小为B kb - 是否有任何公式可以构建以找到空闲缓冲区大小 ?

1 个答案:

答案 0 :(得分:7)

4KB是个不错的选择。欲了解更多信息,请注意:
File I/O with streams - best memory buffer size

问候