如何在C#中使用保存对话框保存ASCII文本文件?
问题描述:
好的,我可能在这里错过了一些非常简单的事情,但我已经在这里一个多小时了,并且无处可去。 :(我有一个使用微软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";
}
}
}
任何建议,将不胜感激感谢
答
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");
}
答
这将工作:。
using (System.IO.TextWriter tw = new System.IO.StreamWriter(saveFileDialog1.FileName))
{
tw.WriteLine("Success");
}
答
FileInfo fi = new FileInfo(saveFileDialog1.Filename);
StreamWriter stm = fi.OpenWrite;
// or
FileStream stm = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
感谢马特;这很好用! – 2009-12-29 21:52:36