2016-09-26 3 views
1

私はC#で新たなんだ、と私は、この目的のために、ファイルにテキストを書いている、私はGoogleで検索見つかったソースコードを使用しています:StreamWriterがC#でファイルにテキストを書き込めないのはなぜですか?

FileStream fs = System.IO.File.OpenWrite(Server.MapPath("~/FILE/") + logFile); 
StreamWriter sw = new StreamWriter(fs); 

//sw.Write(DateTime.Now.ToString() + " sent email to " + email); 
sw.Write(" sent email to "); 

fs.Close(); 

このコードを実行すると、しかし、私はテキストファイルを開くと、私はそれに何かデータが表示されない、何が起こっている?どうすればこの問題を解決できますか?

+0

https://msdn.microsoft.com/en-us/library/8bh11f1k.aspxを試してみて、https://www.google.com/#q=c-sharp+write+text+file –

+0

最初に 'sw'を閉じて、' fs'を閉じる前に書き込んだものをフラッシュするか、あるいは両方を['using'ステートメントに入れるのが良いかどうかを確認してください(https://msdn.microsoft.com/en-us/library/yh598w02)。 .aspx)。 – juharr

+0

@juharr私は作家が自動的にも、残酷なストリームを閉じるだろうと思う。 – HimBromBeere

答えて

1

コードを次のように変更しました。あなたがこの種を探していることを願っています。

using (FileStream fs = System.IO.File.OpenWrite(Server.MapPath("~/FILE/") + logFile)) 
{ 
    using (StreamWriter sw = new StreamWriter(fs)) 
    { 
     //sw.Write(DateTime.Now.ToString() + " sent email to " + email); 
     sw.Write(" sent email to "); 
    } 
    fs.Close(); 
} 
0

はストリームとライターを使用して代わりに、ログファイルを追加する簡単なFile.AppendAllText

File.AppendAllText(Path.Combine(Server.MapPath("~/FILE/"), logFile), 
    string.Format("{0} sent email to {1}", DateTime.Now, email)); 

を試してみてください。

+0

ありがとう、私のコードを解決する方法はありますか?私はそのコードで書きたいです。 –

+0

@behi behi:あなたの目標がログファイルを追加するだけの場合、 'File.AppendAllText'があなたのために行います(オープンストリーム、ライター、そして適切な方法で終了)。 'FileStream'と' StreamWriter'はあなたのコードに複雑さをもたらします。ストリームやライターは、条件付きの複雑なコードを実装したり、消去したり、上書きしたりする必要があるときの方法です。 –

+0

私の友人、あなたの権利に感謝しますが、私の会社では、私の上司はちょうどそれを書きます! –

関連する問題