2016-10-13 5 views
1

コンソールアプリケーションを作成していますが、アプリケーションの動作を追跡するためにログファイルを設定しようとしています。 これは私がFileStreamとWriterを設定する方法です。なぜConsole.SetOut(StreamWriter)は自分のファイルに書き込めませんか?

FileStream logstrm; 
StreamWriter logwriter; 
logstrm = new FileStream("file.txt", FileMode.OpenOrCreate, FileAccess.Write); 
logwriter = new StreamWriter(logstrm); 

以下は、SetOutを呼び出す前に、適切にテキストをコンソールに出力します。

Console.WriteLine("LOG FILES CREATED"); 

はしかし、かつて私は、次の操作を行い、私はテキストがfile.txtに書き込まれることを期待するが、私はそれを開いたときに何もファイルではありません。

Console.SetOut(logwriter); 
Console.WriteLine("TEXT EXPECTED TO BE IN FILE.TXT"); 

私はこれを完全に間違っていますか?

+0

Close Stream - logwriter.Close() – Jivan

+0

Windowsのデザイナーの意見を得るには、悪名高いUnixの問題です.Gettaの "getta byte、getta byte byte byte"です。彼はそれについて少ししかできなかった。 StreamWriter.AutoFlushプロパティを* true *に設定するのはあなた次第です。 –

答えて

0

単にあなたはどちらの

logwriter.Close(); 

を出力ファイルをクローズ

PSフラッシュ使用するか、ファイルを閉じないでください:別のテスト:あなたが内部バッファを超えるまでは、コンソールへの書き込みを続けることができますがいくつかの文字がファイルに書き込まれることがわかります。

0

ファイルI/Oはバッファされており、実際にファイルに書き込むにはフラッシュする必要があります。

ファイルに明示的にフラッシュするには、StreamWriter.Flushを呼び出します。 Writeを呼び出すたびにストリームがフラッシュされるようにAutoFlushを設定することもできます。

ファイルは自動的にCloseにフラッシュされます。

関連する問題