Textfile einlesen

AllieAusNotebook

Grünschnabel
Hi Leute,

nach vier Zeilen wird mir eine leere Zeile in der Messagebox ausgegeben und er beendet das Einlesen. Da ist aber noch längst nicht Ende. Wo mag das dran liegen?

Code:
  Dim fpath = frmRoot.txtPath.Text & "\pdfprinterprinter.txt"
        Dim fs As FileStream = New FileStream(fpath, FileMode.Open, FileAccess.Read)

        Dim line As String = ""
        Dim r As StreamReader = New StreamReader(fs)
        r.BaseStream.Seek(0, SeekOrigin.Begin)

        If System.IO.File.Exists(fpath) Then
            'durchsuche Datei nach bisherigen Einstellungen
            While (r.EndOfStream <> True)
                line = r.ReadLine()
                Select Case line
                    Case "Zeitintervall"
                        MsgBox(r.ReadLine)
                        cmbIntervall.SelectedItem = r.ReadLine
                    Case "Username"
                        MsgBox(r.ReadLine)
                        txtUsername.Text = r.ReadLine
                    Case "Passwort"
                        MsgBox(r.ReadLine)
                        txtPasswort.Text = r.ReadLine
                    Case Else
                        MsgBox(line)
                End Select
            End While

            r.Close()
            fs.Close()

        End If
    End Sub

Ciao,
Allie
 
Das File.Exists gehört mal ganz an den Anfang, denn an der Position deiner Anweisung hats schon lange vorher eine Exception gegeben. Zweitens: Überprüfe deine ReadLine()-Aufrufe. Denn jeder dieser Aufrufe, liest eine weitere Zeile ein. Du liest dir das in deiner Schleife ohnehin in die Variable line ein, arbeite damit weiter.
 
Hi Du,

Danke, ich habe das File.Exists erstmal nach oben geschoben. In meiner Textdatei steht zum Beispiel

c:\Test Testdrucker
***********
Zeitinterverall
25 Sekunden
***********
Username
Allie
Passwort
Allie

Er liest bis Testdrucker und danach erhalte ich eine leere Messagebox.

Hier der geänderte Code:
Code:
 Dim fpath = frmRoot.txtPath.Text & "\pdfprinterprinter.txt"
        If System.IO.File.Exists(fpath) Then
            Dim fs As FileStream = New FileStream(fpath, FileMode.Open, FileAccess.Read)

            Dim line As String = ""
            Dim r As StreamReader = New StreamReader(fs)
            r.BaseStream.Seek(0, SeekOrigin.Begin)

            'durchsuche Datei nach bisherigen Einstellungen
            While (r.EndOfStream <> True)
                line = r.ReadLine()
                Select Case line
                    Case "Zeitintervall"
                        MsgBox(line)
                        cmbIntervall.SelectedItem = r.ReadLine
                    Case "Username"
                        MsgBox(line)
                        txtUsername.Text = r.ReadLine
                    Case "Passwort"
                        MsgBox(line)
                        txtPasswort.Text = r.ReadLine
                    Case Else
                        MsgBox(line)
                End Select
            End While

            r.Close()
            fs.Close()

        End If

Gruß,
Allie
 
Zurück