Как использовать диалоговое окно "Сохранить" в C# для сохранения текстового файла ASCII?

Ладно, я, наверное, здесь упускаю что-то очень простое, но я занимаюсь этим уже больше часа и ничего не получаю.:(У меня есть проект C#, использующий Microsoft Visual C# 2008 Express Edition. Диалоговое окно "Сохранить" отображается по желанию, но оно никогда не создает файл. На самом деле, если файл указан, я бы хотел, чтобы приложение поддерживало его с текущим данные как файл журнала. На данный момент, я был бы счастлив, если бы я мог получить вещь ####### для создания пустого файла. Вот что я смог придумать до сих пор:

      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() и получить прямой доступ к стриду.

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

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

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); 
Другие вопросы по тегам