2015-08-31 8 views
0

Я занимаюсь некоторыми упражнениями WPF, и я мог бы успешно записать файл с контентом на нем.Избегайте исключения при записи в нулевой файл

SaveFileDialog sfd = new SaveFileDialog(); 
sfd.Filter = "Text file (*.txt)|*.txt"; 
sfd.ShowDialog(); 
using (StreamWriter sw = File.CreateText(sfd.FileName)) 
{ 
    sw.Write(container.Text); 
    sw.Close(); 
} 
MessageBox.Show("File " + sfd.FileName + " created at " + DateTime.Now.ToString()); 
container.ResetText(); 

Это using (StreamWriter) растет исключение.

Если я попытаюсь сохранить файл, но, закрыв окно перед сообщением имени файла, все будет плохо.

Как я могу избежать этого? Я попытался проверить, если файл является недействительным (как выше, так и внутри using заявление, но она по-прежнему уходит

+0

Уточнитните 'дела идут bad' –

+0

Прочитайте документацию для SaveFileDialog.FileName. Это будет пустая строка, а не null, если не выбран ни один файл: https://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.filename (v = vs.110) .aspx. – Joe

ответ

3

Вы должны проверить результат ShowDialog:..

SaveFileDialog sfd = new SaveFileDialog(); 
sfd.Filter = "Text file (*.txt)|*.txt"; 
if (sfd.ShowDialog() == DialogResult.OK) 
{ 
    File.WriteAllText(sfd.FileName, container.Text); 
    MessageBox.Show("File " + sfd.FileName + " created at " + DateTime.Now.ToString()); 
    container.ResetText(); 
} 
+0

говорит, что оператор не может быть применен к операндам. =/ – Onilol

+0

Используете ли вы WPF SaveFileDialog (Microsoft.Win32.SaveFileDialog) или WinForms SaveFileDialog (System.Windows. Forms.SaveFileDial автогол)? Если вы разрабатываете приложение WPF, вы должны использовать WPF один, который возвращает Nullable , который? оператор работает. –

+0

Я использую WinForms. – Onilol

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