2011-06-23 17 views
0

ループとCopyToメソッドを使用してたくさんのファイルをコピーしようとしています。 コピーが非常に遅いです。毎分10メガバイト! (マウスとコピーの右クリックとは対照的に)。C#のコピーが非常に遅い

もっと速い使用方法はありますか?

+1

@ジョン塩を追加... – evilone

+1

あなたの質問の表現を改善する方法に関するガイダンスについては、http://stackoverflow.com/faq – Pooli

+1

または多分チキンをお読みください。 – RPM1984

答えて

2

はい、それに応じてバッファには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を調整します。あなたは全体的なスピードを上げるために潜在的にこれを囲むことができるかもしれませんが、わずかに微調整すれば十分な改善が得られます。

1

ファイルをコピーする最も速い(そして最も便利な)方法はおそらくFile.Copyです。あなたがそれを使用していない理由はありますか?

関連する問題