2009-12-29 196 views
0

好的,我可能在這裏錯過了一些非常簡單的事情,但我已經在這裏一個多小時了,並且無處可去。 :(我有一個使用微軟Visual C#2008速成版的C#項目,保存對話框會根據需要顯示,但它永遠不會生成文件。實際上,一旦文件被指定,我想讓應用程序保持當前狀態數據作爲一個日誌文件,現在,我只是很高興,如果我能得到#######東西來創建一個空文件,以下是我到目前爲止能夠想到的:如何在C#中使用保存對話框保存ASCII文本文件?

 private void saveLogAsToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
     if (DialogResult.OK == saveFileDialog1.ShowDialog()) 
     { 
      // If the file name is not an empty string open it for saving. 
      if (saveFileDialog1.FileName != "") 
      { 
/* This does not work. 
       // Saves the Image via a FileStream created by the OpenFile method. 
       System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile(); 
       fs.Write((byte)"Success!\r\n", 0, 10); 
       fs.Close(); 
*/ 
      } 
      else 
      { 
       textBox1.Text += "An invalid filename was specified.\r\n"; 
      } 

     } 
     } 

任何建議,將不勝感激感謝

回答

3

Gabriel的回答是正確的,除了他直接使用saveFileDialog1.FileName而不是SaveFileDialog上的OpenFile()方法。如果您希望您的應用程序在部分信任環境中工作,那麼您需要使用OpenFile()並直接訪問stread。

有關更多信息,請參閱this MSDN article

這裏的等效代碼:

using (var stream = dlg.OpenFile()) 
using (var writer = new System.IO.StreamWriter(stream)) 
{ 
    writer.WriteLine("Success"); 
} 
+0

感謝馬特;這很好用! – 2009-12-29 21:52:36

3

這將工作:。

using (System.IO.TextWriter tw = new System.IO.StreamWriter(saveFileDialog1.FileName)) 
{ 
    tw.WriteLine("Success"); 
} 
1
FileInfo fi = new FileInfo(saveFileDialog1.Filename); 
StreamWriter stm = fi.OpenWrite; 
// or 
FileStream stm = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);