2011-09-30 3 views
0

System.IO.StreamReader에 오류가 있습니다.Vb.net 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 

프로그램이 시작되면 faultis '빈 경로 이름이 올바르지 않습니다.'

이 오류를 해결하는 방법은 무엇입니까?

도움 주셔서 감사합니다.

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 

를 사용해야와 파일 이름이 비어 포함 !! :

+0

* New as *를 objReader 멤버로 사용할 수 없습니다. 너무 빨리 생성됩니다. 실제로 이것은 대단히 직관적이지 않습니다. –

답변

2

당신은 쓰기

편집 :
나는 당신의 의견에 무엇을 요구 반영하기 위해 내 게시물 편집 : 새로운이 올바른지에 대한 으로

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

알아 두지 만 ı 처음 경로를 가져오고 사용자가 경로를 선택하면 objReader가 경로를 따라 움직입니까? – brsvdn

+0

@brsvdn : 내 편집 된 게시물을 읽으십시오.하지만 생각하기에는 넌센스입니다 ... – Marco

0

한스 옆모습의 의견을. StreamReader를 전역 변수로 만들어서는 안됩니다. 사용 준비가 끝날 때까지 작성하지 마십시오. 그리고 위해 StreamReader의 경우, 당신은 사용하여 블록 내에서 인스턴스화해야합니다

일반적으로
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 

, 전역 변수를 사용하지 않는 당신이 그들을 사용하는 곳 가까이를 선언하는 시도해야합니다.

관련 문제