Textdatei ohne Inhalt auf Zeilen prüfen - Fehler

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ThePlexian.

    Textdatei ohne Inhalt auf Zeilen prüfen - Fehler

    Hi zusammen!

    Ich habe ein Problem beim Festellen, wie viele Zeilen sich in einer leeren Textdatei befinden.
    Ich bin folgendermaßen vorgegangen:

    Lösung:

    VB.NET-Quellcode

    1. Imports System.IO 'Import auf System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Dim Datei As String = Application.StartupPath & "\test.txt" 'Dateipfad festlegen
    5. If File.Exists(Datei) Then
    6. Dim lines() As String = File.ReadAllLines(Datei, System.Text.Encoding.ASCII) 'Datei zeilenweise einlesen
    7. If lines.Length = 0 Then 'prüfen, ob etwas in der Datei steht
    8. MessageBox.Show("Datei ohne Inhalt!")
    9. Else
    10. MessageBox.Show("Datei mit Inhalt!")
    11. End If
    12. Else
    13. MessageBox.Show("Datei '" & Datei & "' nicht gefunden!")
    14. End If
    15. End Sub
    16. End Class


    Ich bekomme den Fehler System.IndexOutOfRangeException bei If lines(0) = "" Then, wenn die Textdatei leer ist, da es keine Zeile 0 gibt.

    Ich könnte es anstatt mit File.ReadAllLines zwar mit File.ReadAllText probieren, aber dann habe ich im weiteren Programmverlauf Probleme mit der korrekten Trennung der Zeilen.

    Wäre hier beides in Kombination sinnvoll?


    Danke schonmal!

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „TRiViUM“ ()

    eigentlich ist das Problem sonnenklar, wenn du die IndexOutOfRange-Exception bekommst - kommst du selbst drauf?

    bitte nicht iwas probieren, sondern lass dir einfach durch den Kopf gehen, was die Fehlermeldung dir sagt, und was das in der Zeile bedeutet / nichts anderes bedeuten kann.

    (und es geht hier auch nicht um eine "optimierung", sondern darum, einen Code-Fehler zu korrigieren - das ist etwas sehr anderes)
    warum ich den Fehler bekomme weiß ich ja, weil es keine Zeile 0 gibt, wenn die Textdatei leer ist.
    Meine Frage ist ja auch gewesen, wie ich es lösen kann :)

    mit optimieren hab ich mich falsch ausgedrückt...

    Habs gerade selber hinbekommen...
    Ich sollte vorher mit lines.Length prüfen, wie viele Zeilen vorhanden sind :rolleyes:

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „TRiViUM“ ()

    TRiViUM schrieb:

    weil es keine Zeile 0 gibt
    genau. Wenn die Datei keine Zeile enthält, dann ist das string-Array lines logischerweise leer.
    Das kann man doch mit leichtigkeit abprüfen - die Array.Length-Property ist dir ein Begriff? Bei einem leeren Array ist Array.Length 0 - kann ja nicht anders sein.
    @TRiViUM :
    Mal ein Schönheitstipp:

    VB.NET-Quellcode

    1. ​Imports System.IO 'Import auf System.IO
    2. '---
    3. Public Class Form1
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. Dim Datei As String = Application.StartupPath & "\test.txt" 'Dateipfad festlegen
    6. If Not File.Exists(Datei) Then
    7. MessageBox.Show("Datei '" & Datei & "' nicht gefunden!")
    8. Exit Sub
    9. End If
    10. Dim lines() As String = File.ReadAllLines(Datei, System.Text.Encoding.ASCII)
    11. If lines.Length = 0 Then 'prüfen, ob etwas in der Datei steht
    12. MessageBox.Show("Datei ohne Inhalt!")
    13. Else
    14. MessageBox.Show("Datei mit Inhalt!")
    15. End If
    16. End Sub
    17. End Class


    Nennt sich nach R# "Invert If to reduce nesting", damit hast du einfach weniger Einrückungen
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais