2012-06-30 80 views
2

下面的程序應該打開/創建一個文件,並且每次都將當前日期寫入它的結尾。使用StreamWriter添加文本

using System; 
using System.IO; 
using System.Text; 


namespace roughDraft 
{ 
    class Program 
    { 
     public static void Main() 
     { 
      StreamWriter oFile = File.AppendText("baza.txt"); 
      string output = "Current date and time: " + DateTime.Now.ToString("yyyy.MM.dd hh:mm:ss"); 


      oFile.WriteLine(output); 

      Console.WriteLine(output); 

      Console.ReadKey(); 
     } 
    } 
} 

我不知道它爲什麼只創建一個空文件。

回答

9

您應該始終將StreamWriter對象放在using聲明中,以便它們能夠正確關閉。

using (StreamWriter oFile = File.AppendText("baza.txt")) 
{ 
    string output = "Current date and time: " 
        + DateTime.Now.ToString("yyyy.MM.dd hh:mm:ss"); 
    oFile.WriteLine(output); 
} 

或者,您也可以手動呼籲StreamWriterClose method,但using聲明,對我來說,更容易和更不容易出錯。

+3

或使用沖洗。雖然你沒有回答,但是你沒有解釋爲什麼他的解決方案不起作用(除非調用Flush或Close,否則緩衝區不會寫入磁盤)。 – Trisped

+1

@FishBasketGordo,你的例子對我有很大的幫助,但它不完整 - 現在它寫入文件,但只有當它不存在時。調用Close()方法時沒有這樣的問題。你也沒有解釋爲什麼我的程序沒有按照我夢想的方式工作。感謝trispeed給你評論,現在我100%滿意:) – 0x6B6F77616C74

+1

@kowalt:因此'使用'語句調用'dispose'調用'flush(true,true)',而'StreamWriter.WriteLine'只能立即寫入文件當['AutoFlush'](http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush.aspx)'== true.' –

1

其創建空文件,因爲你是寫在它但不關閉的StreamWriter

這樣oFile.Close();