ネットワーク接続が遅い海外のリモートサーバー上のファイルに大量のテキストを書き込もうとするプログラムがあります。
次のコードを使用します。ここoutputFileContent
で、はStringBuilder
:です。
using (var outfile = new StreamWriter(myRemoteFilePath))
{
outfile.Write(outputFileContent.ToString());
}
実行に非常に長い時間(数分)かかりますが、最初にローカルファイルに書き込み、次にそれをリモートの場所にコピーすると、はるかに高速になります(20〜30秒)。
string tempFilePath = Path.GetTempFileName();
using (var outfile = new StreamWriter(tempFilePath))
{
outfile.Write(outputFileContent.ToString());
}
System.IO.File.Copy(tempFilePath, myRemoteFilePath, true)
なぜこれが起こっているのか考えていますか?私の唯一の推測は、それがネットワーク全体のバッファリングに関係していること、またはおそらくストリームライターが事前にどれだけの大きさである必要があるかを知らないためだと思います。