2014-02-02 3 views
-1

У меня есть этот код для записи некоторых данных из текстовых полей в текстовый файл. И я использую streamwriter для этого. Здесь вы можете увидеть код:StreamWriter оставляет файл, даже если он не сохранен

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     Dim Save As New SaveFileDialog() 
     Dim myStreamWriter As System.IO.StreamWriter 
     Save.Filter = "Text [*.txt*]|*.txt|All Files [*.*]|*.*" 
     Save.CheckPathExists = True 
     Save.Title = "Export & Save - FNG" 
     Save.FileName = txtTitle.Text & " - Plugs Details File Exported" 
     Save.ShowDialog(Me) 
     Try 

      myStreamWriter = System.IO.File.AppendText(Save.FileName) 
      myStreamWriter.Write("Details of Plugs:" & Environment.NewLine & txtDetails.Text & Environment.NewLine & DateAndTime.Now) 
      myStreamWriter.Flush() 
     Catch ex As Exception 
     End Try 


    End Sub 

Код действительно работает, он также сохраняет детали в текстовый файл. Но проблема в том, что когда я отменяю диалог сохранения файла (без сохранения текстового файла), он создает файл в пути запуска приложения. Почему это происходит? Что я делаю не так? Как это исправить?

+1

Никогда не используйте Try/Catch. Вы просто игнорируете какие-либо исключения, но любые проблемы, возможно, вызвали исключения, которые не исчезают! Кроме того, вы не будете знать, что это за проблемы, поскольку вы проигнорировали их! –

+0

@JohnSaunders я удалил Try/Catch и отлаживал и все еще ничего не выскакивает как ошибка, но файл все равно сохраняется, даже если я не сохраняю файл (даже когда я закрываю диалог сохранения файла):/ – Jeff

+0

См. Мой ответ : почему вы считаете, что отмена сохранения приведет к возврату вашего Sub? –

ответ

1

Попробуйте

If Save.ShowDialog(Me) <> DialogResult.Ok Then Return 

Отмена диалоговое окно автоматически не делает ваш Sub вернуться!

Кроме того, вы используете StreamWriter неправильно. Используйте

Using myStreamWriter As System.IO.StreamWriter = System.IO.File.AppendText(Save.FileName) 
     myStreamWriter.Write("Details of Pish flaps:" & Environment.NewLine & txtDetails.Text & Environment.NewLine & DateAndTime.Now) 
End Using 

И удалить Dim из StreamWriter. Это гарантирует, что StreamWriter будет закрыт, даже если выбрано исключение.

+0

Я, наконец, решил проблему. Все спасибо вам. :) – Jeff

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