2016-02-21 12 views
5

誰かがプログラムを検索するたびにStreamWriterを使用して検索をログに記録しようとしています。 StreamWriterに新しいファイルを書き込むことはできますが、コンテンツは作成されません。私は適切な使用のためにGoogleを検索しようとしたし、それは私が正しくそれをやったように見えます。あなたが私のコードを読んで、私が間違っている場所を教えたら、私はとても感謝しています!C# - StreamWriterがファイルを作成しているのにコンテンツがありません

StreamWriter write = new StreamWriter("searchLogFile.dat"); 
write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 

だから、の線に沿ってライン何かを印刷する必要があります:「TITLE === $ 100.00」

答えて

9

あなたはライターを閉じていません。ライターはデータをバッファリングします。そのため、フラッシングやクローズを行わずにガベージコレクションを実行できるようにするだけで、データをファイルに書き込むことなくファイルハンドルが閉じられます。

あなたは理想的using声明でこれを行う必要があります。

using (StreamWriter write = new StreamWriter("searchLogFile.dat")) 
{ 
    write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 
} 

ライターは例外がスローされた場合でも、閉じられますこの方法。 IDisposableを実装するタイプにusingステートメントを使用する習慣を身につけてください。

ファイルに値を1つだけ書き込む場合は、File.WriteAllTextを使用することをおすすめします。また、このコードを簡単にするためのフォーマット文字列を受け入れるTextWriter.WriteLineのオーバーロードを使用することができます。

writer.WriteLine("{0} === {1:C"}, gameTitle, saleValue); 

やC#6で:

一度で
writer.WriteLine($"{gameTitle} === {saleValue:C}"); 

またはすべて:

File.WriteAllText("searchLogFile.dat", $"{gameTitle} === {saleValue:C}"); 
関連する問題