ループとCopyToメソッドを使用してたくさんのファイルをコピーしようとしています。 コピーが非常に遅いです。毎分10メガバイト! (マウスとコピーの右クリックとは対照的に)。C#のコピーが非常に遅い
もっと速い使用方法はありますか?
ループとCopyToメソッドを使用してたくさんのファイルをコピーしようとしています。 コピーが非常に遅いです。毎分10メガバイト! (マウスとコピーの右クリックとは対照的に)。C#のコピーが非常に遅い
もっと速い使用方法はありますか?
はい、それに応じてバッファには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
を調整します。あなたは全体的なスピードを上げるために潜在的にこれを囲むことができるかもしれませんが、わずかに微調整すれば十分な改善が得られます。
ファイルをコピーする最も速い(そして最も便利な)方法はおそらくFile.Copy
です。あなたがそれを使用していない理由はありますか?
@ジョン塩を追加... – evilone
あなたの質問の表現を改善する方法に関するガイダンスについては、http://stackoverflow.com/faq – Pooli
または多分チキンをお読みください。 – RPM1984