2016-02-10 5 views
0

Я разрабатываю приложение C# с графическим интерфейсом, и я сохраняю несколько журналов в текстовом поле. Когда пользователь нажимает кнопку сохранения, открывается папкаBrowserDialog. Пользователь выбирает каталог и нажимает ok. Появляется MessageBox, включая сообщение, «сохраненное в файле ...». Операция завершена.Как сохранить текст в текстовом поле в файле flatfile?

Все это я сказал, бывает, нонет файла в каталоге, что пользователь указывает. Когда я не использую ни TextWriter объект, ни File.WriteAllText (..), я всегда терпел неудачу. Что-то не так в коде ниже?

private void saveBtn_Click(object sender, EventArgs e) 
    { 
     if (folderBrowserDialog.ShowDialog() == DialogResult.OK) 
     { 
      // create a writer and open the file 
      TextWriter tw = new StreamWriter(folderBrowserDialog.SelectedPath + "logFile.txt"); 
      // write a line of text to the file 
      tw.WriteLine(histTxt.Text); 
      // close the stream 
      tw.Close(); 

      //File.WriteAllText(folderBrowserDialog.SelectedPath + "logFile.txt", histTxt.Text); 
      MessageBox.Show("Saved to " + folderBrowserDialog.SelectedPath + "\\logFile.txt", "Saved Log File", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 
    } 
+0

Если вы не указали местоположение папки, не могли бы вы получить файл? – Takarii

+3

Посмотрите папку - кажется, что вы пишете ее до c: \ some \ pathlogfile.txt, а не c: \ some \ path \ logfile.txt в соответствии с сообщением. Вы можете взглянуть на ['Path.Combine'] (https://msdn.microsoft.com/en-us/library/system.io.path.combine (v = vs.110) .aspx). –

+1

Отсутствует обратная косая черта в 'new StreamWriter (folderBrowserDialog.SelectedPath +" logFile.txt ");'? – Mark

ответ

1

Использование Path.Combine для создания/добавления пути к файлу, например:

 TextWriter tw = new StreamWriter(Path.Combine(folderBrowserDialog.SelectedPath, "logFile.txt")); 

Это добавит путь Seperator текущей ОС, если это необходимо.

0

Когда вы создаете потоки, используйте функцию use, чтобы автоматически утилизировать ресурсы. Если вы хотите создать файл:

using (FileStream fs = File.Create(path)) 
    using (TextWriter tw = new StreamWriter(fs)) 
    { 
     tw.WriteLine(histTxt.Text); 
     tw.Close(); 
    } 

Этот код должен работает, и снять блокировку, что метод File.Create создает на файл.

Смежные вопросы