如何在C#中使用保存对话框来保存ASCII文本文件?

时间:2009-12-29 21:25:45

标签: c# ascii text-files save-dialog

好吧,我可能在这里错过了一些非常简单的东西,但是我已经在这里待了一个多小时而且无处可去。 :(我有一个使用Microsoft的Visual C#2008 Express Edition的C#项目。保存对话框按需要显示,但它永远不会生成文件。实际上,一旦指定了文件,我希望应用程序用当前文件维护它数据作为日志文件。现在,我很高兴,如果我能得到#######的东西来制作一个空文件。这就是我迄今为止能够想到的:< / p>

      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 个答案:

答案 0 :(得分:3)

这将有效:

using (System.IO.TextWriter tw = new System.IO.StreamWriter(saveFileDialog1.FileName))
{
    tw.WriteLine("Success");
}

答案 1 :(得分: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");
}

答案 2 :(得分:1)

FileInfo fi = new FileInfo(saveFileDialog1.Filename); 
StreamWriter stm = fi.OpenWrite;
// or
FileStream stm = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);