Vb.net System.IO.StreamReader Недопустимое пустое имя пути - PullRequest
0 голосов
/ 30 сентября 2011

У меня ошибка с System.IO.StreamReader.

Public Class Project

    Dim merah As Integer
    Dim File_Directory As OpenFileDialog = New OpenFileDialog()
    Dim objReader As New System.IO.StreamReader(File_Directory.FileName)
    Dim Text_LineByLine As String

Private Sub BrowseFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrowseFile.Click



    File_Operations()
    'Do While objReader.Peek() <> -1
    Default_Operations()
    MessageBox.Show(Text_LineByLine)
    'Loop

End Sub

Sub File_Operations()
    File_Directory.InitialDirectory = "C:\"
    File_Directory.Filter = "All files (*.txt)|*.txt|All files (*.txt)|*.txt"
    If File_Directory.ShowDialog() = DialogResult.OK Then
        BrowserPath.Text = File_Directory.FileName
    End If
End Sub

Когда программа запускается, ошибка «Пустой путь недопустим».

Как устранить эту ошибку?

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Вы пишете:

Dim File_Directory As OpenFileDialog = New OpenFileDialog()
Dim objReader As New System.IO.StreamReader(File_Directory.FileName)

, но вам нужно использовать

Dim File_Directory As OpenFileDialog = New OpenFileDialog()
If File_Directory.ShowDialog() = DialogResult.OK Then
    Dim objReader As New System.IO.StreamReader(File_Directory.FileName)
Endif

Если вы не запускаете диалоговое окно открытия файла, само диалоговое окно не отображается и содержащее имя файла пусто!!

РЕДАКТИРОВАНИЕ:
Я редактирую свой пост, чтобы отразить то, что вы спросили в своем комментарии:

Dim File_Directory As OpenFileDialog = New OpenFileDialog()
File_Directory.Filename = initial_file_name
Dim objReader As New System.IO.StreamReader(File_Directory.FileName)

или лучше

Dim File_Directory As OpenFileDialog = New OpenFileDialog()
Dim objReader As New System.IO.StreamReader(initial_file_name)
0 голосов
/ 30 сентября 2011

Комментарий Ганса Пассанта о как новом правильный. Вы не должны создавать свой StreamReader как глобальную переменную. Не создавайте его, пока не будете готовы его использовать. А в случае StreamReader вы должны создать его экземпляр внутри блока Using:

Imports System.IO

Sub Main()

    Dim filename As String = someMethodThatGetsTheFilename()

    Using objReader As New StreamReader(filename)
        'Use the StreamReader here
    End Using   'This line will automatically close and dispose of the StreamReader

End Sub

В общем, вы должны стараться избегать использования глобальных переменных и объявлять их рядом с тем местом, где вы будете их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...