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

标签 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 和我的硬盘的 block 大小是 B kb -有没有我可以构建的公式来找到空闲缓冲区大小?

最佳答案

4KB 是一个不错的选择。有关更多信息,请查看:
File I/O with streams - best memory buffer size

问候

关于c# - 在 C# 中处理文件时确定缓冲区大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18207407/

相关文章:

c# - 事件日志写入权限

.net - 使用 .NET 关闭打开的 TCP IP 连接

c# - 如何修复 C# 注释 header

c# - 当 "postback"使用 AJAX UpdatePanel 时,HiddenField 值属性变回空

java - Unity 2021.3.4f1 Gradle 构建失败

c# - XNA中如何正确卸载图形资源?

c# - IdentityServer4 - 根据 client_id 使用不同的用户存储

c# - 在 Stream 上应用正则表达式?

javascript - 如何防止用户多次点击按钮?

c# - 如何获取具有动态绑定(bind)目标的实例方法的方法引用