2012-06-13 32 views
14

我的代碼在C#(asp.net MVC)StreamWriter.Write不寫入文件;沒有拋出異常

StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt"); 

// write a line of text to the file 
tw.Write("test"); 

被創建的文件,但是是空的。沒有例外被拋出。我從來沒有見過這個,我被困在這裏;我只需要編寫一些調試輸出。

請指教。

+0

以防萬一它有助於人們瞭解,什麼語言?(推測是C++或C#) – akroy

+0

請參閱編輯說明 – sarsnake

回答

6

使用

System.IO.File.WriteAllText(@"path\te.txt", "text"); 
+2

這是最好的答案 - 如果你知道輸出內容不會那麼大.. –

40

的StreamWriter被默認緩衝,這意味着它不會輸出,直到它接收一個沖洗()或關閉()調用。

如果需要,您可以通過設置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(); 
+1

我有同樣的問題 - 不知道爲什麼它不寫一切都是正確的。不知道關於沖水/關閉。我認爲這是總體上最好的答案。 (我知道這是舊的) – alykins

4

既不沖水也不關閉也不處理。 試試這個

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(); 
} 
0

替代

FileStream mystream = new FileStream("C:\\mycode\\myapp\\logs\\log.txt",  
FileMode.OpenOrCreate, FileAccess.Write);   
StreamWriter tw = new StreamWriter(mystream); 
tw.WriteLine("test"); 
tw.close(); 
0

嘗試關閉該文件或添加\n到行如

tw.WriteLine("test"); 
tw.Close(); 
1

在VB.net雅這不是必要的,但它似乎與CSharp你需要一個Writer.Flush調用來強制寫。當然Writer.Close()也會強制刷新。

我們還可以設置的StreamWriter實例的自動刷新屬性:

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. 

來源:http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush(v=vs.110).aspx

1

您需要關閉或寫完後沖洗的StreamWriter。

tw.Close(); 

tw.Flush(); 

但是,最好的做法是包裹輸出代碼using語句,因爲StreamWriter的實現IDisposable:

using (StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt")){ 
// write a line of text to the file 
tw.Write("test"); 
} 
2
 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(); 
  • 的問題是當參考FileStrea創建StreamWriter對象時m對象,在SW對象關閉之前,SW對象將始終期待一些數據。
  • 所以使用後sw.Close(); 您打開的文件將被關閉並準備顯示輸出。