C#の私のコード(asp.net MVC)
StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt");
// write a line of text to the file
tw.Write("test");
ファイルは作成されますが、空です。例外はスローされません。私はこれを見たことがなく、ここで立ち往生しています。デバッグ出力を書くだけです。
お知らせ下さい。
使用する
System.IO.File.WriteAllText(@"path\te.txt", "text");
StreamWriterはデフォルトでバッファリングされます。つまり、Flush()またはClose()呼び出しを受け取るまで出力されません。
必要に応じて AutoFlush プロパティを設定することで変更できます。それ以外の場合は、次を実行します。
StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt");
// write a line of text to the file
tw.Write("test");
tw.Close(); //or tw.Flush();
フラッシュも閉鎖も廃棄もされません。これを試して
using (StreamWriter tw = new StreamWriter(@"C:\mycode\myapp\logs\log.txt"))
{
// write a line of text to the file
tw.Write("test");
tw.Flush();
}
または私の好み
using (FileStream fs = new FileStream( @"C:\mycode\myapp\logs\log.txt"
, FileMode.OpenOrCreate
, FileAccess.ReadWrite) )
{
StreamWriter tw = new StreamWriter(fs);
tw.Write("test");
tw.Flush();
}
書き込みが終了したら、StreamWriterを閉じるかフラッシュする必要があります。
tw.Close();
または
tw.Flush();
ただし、StreamWriterはIDisposableを実装するため、ベストプラクティスはusingステートメントで出力コードをラップすることです。
using (StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt")){
// write a line of text to the file
tw.Write("test");
}
FileStream fs = new FileStream("d:\\demo.txt", FileMode.CreateNew,
FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.ASCII);
int data;
sw.Write("HelloWorld");
sw.Close();
fs.Close();
VB.netのYaはこれは必要ありませんでしたが、CSharpでは書き込みを強制するにはWriter.Flush呼び出しが必要なようです。もちろん、Writer.Close()もフラッシュを強制します。
StreamWriterインスタンスのAutoFlushプロパティを設定することもできます。
sw.AutoFlush = true;
// Gets or sets a value indicating whether the StreamWriter
// will flush its buffer to the underlying stream after every
// call to StreamWriter.Write.
From: http://msdn.Microsoft.com/en-us/library/system.io.streamwriter.autoflush(v = vs.110).aspx
代替案
FileStream mystream = new FileStream("C:\\mycode\\myapp\\logs\\log.txt",
FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter tw = new StreamWriter(mystream);
tw.WriteLine("test");
tw.close();
ファイルを閉じるか、次のような行に\n
を追加してください。
tw.WriteLine("test");
tw.Close();