FileStream
のStreamWriter
を使って、.NET 4.5の既存のファイルにテキストを追加するときに何か面白かったです(古いフレームワークは試していません)。私は2つの方法を試しました。私は2つの違いが何であるか疑問に思っています。StreamWriterとFileStreamを使ってtxtファイルに書き込む
どちらの方法は、私はそれは、アプリケーションが完全にファイルを閉じていることを確認するための最良の方法だと個人的な経験を通じて発見したので、私はusing
文で作成を持っているトップ
if (!File.Exists(filepath))
using (File.Create(filepath));
に次のコードを含んでい。
非加工方法:このメソッドは何もして
using (FileStream f = new FileStream(filepath, FileMode.Append,FileAccess.Write))
(new StreamWriter(f)).WriteLine("somestring");
は、ファイルに追加されてしまいます。
加工方法:
using (FileStream f = new FileStream(filepath, FileMode.Append,FileAccess.Write))
using (StreamWriter s = new StreamWriter(f))
s.WriteLine("somestring");
私はかなりの検索に何を知らなくても、グーグルのビットをやった、と有益な何かを発見していません。それで、なぜ匿名のStreamWriter
が(匿名ではないのですか?)StreamWriter
が失敗するのはなぜですか?
私は 'StreamWriter'がフラッシュされるまで何も実際に_write_しないと思います。' using'ブロックで暗黙的に呼び出される 'Dispose'メソッドは自動的にフラッシュします。編集:注: 'StreamWriter'には、[AutoFlush](http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush.aspx)プロパティがあります。このプロパティは、私が推測している記述を書くたびにストリームをフラッシュするのは、デフォルトで 'false'です。 –
これは既に答えられていますが、なぜそのようなコードを書式設定する必要がありますか? IMOを読んで理解するのは面白いだけでなく、単純な書式設定エラーでバグが導入されるとリスクが増大します。私は中括弧の大ファンです - いつも! – TheCodeKing
@TheCodeKing既に回答されている場合は、リンクを提供してもよろしいですか?私は正直にそれを探して、投稿する前にすべての提案された答えを見て、それは非常に(それは主に私の無名関数の使用のために)それに答えたものを見ませんでした。また、私はここでは、一部の文体や好みに基づいています。 IMOコードは実際には必要ではない中括弧で囲まれていますが、読みにくいです。 –