StreamWriterを使用して、あるファイルから別のファイルにチャンクをコピーしています。両方のファイルは同じリモートロケーションにありますが、ローカルマシン上でプロセスが実行されます。私はネットワークの不具合が発生した場合に回復してそのプロセスを継続しようとしています。私はコードをステップ実行し、特定の瞬間にネットワーク接続を無効にすることでこれをシミュレートしています。ネットワークリカバリの失敗後のスチームライターの処理
問題は、ネットワークを復旧させるときに、StreamWriterで何もできないことです。 Flush()
、Close()
またはDispose()
を呼び出すと、「指定されたネットワーク名は使用できなくなりました」というIOExceptionがスローされます。私のコードは次のようになります:
int charsToRead = 100;
while(!inputFileStream.EndOfStream)
{
char[] block = new char[charsToRead];
int charsRead = inputFileStream.ReadBlock(block, 0, charsToRead);
outputFileStream.Write(new string(block, 0, charsRead));
outputFileStream.Flush();
}
ネットワーク障害から回復した後にStreamWriterを続ける最良の方法は何ですか?ありがとう。
更新:私はテキストファイルを扱っています。
あなたはUsing-blockに入れてみましたか? – Koen
@Koenどのように役立つだろうか? – Default
これはあなたの質問には触れませんが、 'StreamReader/-Writer'はバイトを読み取っておらず、*文字*を読むことを知っておくべきだと思います。あなたは実際に 'char []'を割り当てましたが、変数 'bytesRead'を呼び出しました。これは間違っています。ファイルが* text *ファイルの場合にのみ 'StreamReader/-Writer'を使うべきです。あらゆる種類のデータをコピーしたい場合は、 'FileStream'(' File.Open() 'を使って作成します)を使用してください。 – Timwi