2009-12-29 4 views
0

Ладно, мне, наверное, не хватает чего-то действительно простого здесь, но я был здесь уже более часа и никуда не уходил. :(У меня есть проект C# с использованием Microsoft Visual C# 2008 Express Edition. Диалоговое окно «Сохранить» появляется по желанию, но оно никогда не делает файл. Практически говоря, как только файл указан, я бы хотел, чтобы приложение поддерживало его с помощью текущего данные как файл журнала. На данный момент я просто был бы счастлив, если бы мог получить ####### вещь для создания пустого файла. Вот что я смог найти до сих пор:Как использовать диалоговое окно «Сохранить» на 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

Ответ Габриэля правильный, за исключением того, что он использует saveFileDialog1.FileName напрямую, а не метод OpenFile() в SaveFileDialog. Если вы хотите, чтобы ваше приложение работало в средах с частичным доверием, вам нужно использовать OpenFile() и напрямую обращаться к текстуре.

См. this MSDN article для получения дополнительной информации.

Вот эквивалентный код:

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

Спасибо Matt; это отлично работает! –

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);