【问题标题】:Copy in c# is very slow在c#中复制非常慢
【发布时间】:2011-09-21 02:26:04
【问题描述】:

我正在尝试使用循环和 CopyTo 方法复制大量文件。 复制速度很慢。每分钟大约 10 mb! (与鼠标右键单击和复制相反)。

有没有更快的替代方法?

【问题讨论】:

  • 请阅读常见问题解答,了解如何改进问题的措辞stackoverflow.com/faq
  • 如果问得正确,我认为这是一个有效的问题。例如,与 C# 中的 Window 的 rightclick->copy->paste 相比,我可以使用什么快速替代方法而不是 CopyTo 方法相当慢?
  • 尝试使用 while 循环。更少的开销。 :)
  • @Jon 食谱是什么,这是我的问题:P
  • 抽象问题,我认为微软不会因为你的问题而改进它

标签: c# copy


【解决方案1】:

是的,使用FileStream 进行相应的缓冲。举个例子,类似这样的事情应该会给你一个想法:

using (var inputStream = File.Open(path, FileMode.Read),
    outputStream = File.Open(path, FileMode.Create))
{
    var bufferRead = -1;
    var bufferLength = 4096;
    var buffer = new byte[bufferLength];

    while ((bufferRead = inputStream.Read(buffer, 0, bufferLength)) > 0)
    {
        outputStream.Write(buffer, 0, bufferRead);
    }
}

相应地调整bufferLength。您可能会围绕它构建一些东西以提高其整体速度,但稍作调整仍应提供足够显着的改进。

【讨论】:

    【解决方案2】:

    我认为这会有所帮助:

    File.Copy vs. Manual FileStream.Write For Copying File

    这也解释了为什么复制功能很慢。

    【讨论】:

      【解决方案3】:

      复制文件最快(也是最方便)的方法可能是File.Copy。你不使用它有什么原因吗?

      【讨论】:

        猜你喜欢
        • 2014-12-09
        • 2015-04-02
        • 2015-08-28
        • 2021-08-28
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        • 2014-07-23
        相关资源
        最近更新 更多