SO WIRD'S GEMACHT: Einlesen einer Textdatei unter Verwendung von System.IO in Visual Basic 2005 oder Visual Basic .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 302309 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D302309
Eine Version dieses Artikels für Microsoft Visual C# .NET finden Sie unter 306777.
Eine Version dieses Artikels für Microsoft Visual Basic 6.0 finden Sie unter 183638.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In diesem Artikel wird ein Verfahren zum Abrufen von Daten aus einer Textdatei und zur Verwendung eines ArrayList-Objekts zur Anzeige dieser Daten beschrieben.

Einlesen von Textdateien in Visual Basic 2005 oder in Visual Basic .NET

Das Öffnen und Lesen von Dateien mit Lesezugriff stellt einen wichtigen Bereich der E/A-Funktionalität dar, auch wenn es nicht erforderlich ist, in die Datei zu schreiben. In diesem Beispiel wird eine Datei zum Lesen geöffnet. Diese Operation kann auf Textdateien angewendet werden, ist jedoch für Binärdateien ungeeignet. In diesem Beispiel wird eine der zahlreichen Methoden verwendet, die zum Öffnen von Dateien verfügbar sind. Für das Speichern von Daten, die aus einer Textdatei abgerufen werden, stehen zahlreiche Datenstrukturen zur Verfügung. Das Speichern dieser Daten in einem ArrayList-Objekt stellt die einfachste Variante dar. In diesem Beispiel werden Objekte aus dem System.IO-Namespace, nämlich die Klasse System.IO.StreamReader, verwendet.

Hinweis Für dieses Beispiel wird eine beliebige Textdatei (.txt) benötigt, aus der Text gelesen werden soll.

Führen Sie die folgenden Schritte durch, um eine Textdatei aus Microsoft Visual Basic 2005 oder Microsoft Visual Basic .NET zu laden und einzulesen:
  1. Starten Sie Microsoft Visual Studio 2005 oder Microsoft Visual Studio .NET. Erstellen Sie eine neue Konsolenanwendung in Visual Basic. Visual Studio erstellt ein Modul, das eine leere Main()-Prozedur enthält.
  2. Stellen Sie sicher, dass das Projekt zumindest auf den System-Namespace verweist. Verwenden Sie die Imports-Anweisung für die Namenspaces System, System.IO und System.Collections, sodass es nicht erforderlich ist, die Deklarationen aus diesen Namenspaces später im Code zu qualifizieren. Diese Anweisungen müssen Sie vor allen anderen Deklarationen verwenden.
    Imports System
    Imports System.IO
    Imports System.Collections
    					
  3. Erstellen Sie eine neue Instanz eines StreamReader-Objekts, und übergeben Sie dem Konstruktor wie folgt den Dateipfad, um eine Datei zum Lesen zu öffnen:
    Dim objReader As New StreamReader("c:\test.txt")
    					
  4. Es wird eine Variable vom Typ "String" benötigt, in der der Inhalt der Datei zeilenweise gespeichert werden kann. Da der Inhalt der Zeilen einem ArrayList-Objekt hinzugefügt werden soll, muss auch ein entsprechendes Objekt deklariert und erstellt werden.
    Dim sLine As String = ""
    Dim arrText As New ArrayList()
    					
  5. Zum Einlesen der Datei stehen mehrere Verfahren zur Verfügung, u. a. die ReadToEnd-Methode, die eine Datei vollständig einliest. In diesem Beispiel wird die Methode ReadLine verwendet, die die Datei zeilenweise einliest. Ist das Ende der Datei erreicht, gibt diese Methode den Wert "Nothing" zurück, was ein Beenden der Schleife ermöglicht. Nach dem Einlesen einer Zeile können Sie diese mit der Methode Add der ArrayList-Klasse in das ArrayList-Objekt einfügen.
    Do
        sLine = objReader.ReadLine()
        If Not sLine Is Nothing Then
            arrText.Add(sLine)
        End If
    Loop Until sLine Is Nothing
    objReader.Close()
    					
  6. Mit der folgenden "For Each"-Schleife kann der Inhalt des so gefüllten ArrayList-Objekts in der Konsole ausgegeben werden:
    For Each sLine In arrText
        Console.WriteLine(sLine)
    Next
    Console.ReadLine()
    					
  7. Speichern Sie den Code, und führen Sie das Projekt aus. Der Inhalt der angegebenen Datei wird in der Konsole ausgegeben.

Vollständiges Codelisting

Imports System
Imports System.IO
Imports System.Collections

Module Module1

    Sub Main()
        Dim objReader As New StreamReader("c:\test.txt")
        Dim sLine As String = ""
        Dim arrText As New ArrayList()

        Do
            sLine = objReader.ReadLine()
            If Not sLine Is Nothing Then
                arrText.Add(sLine)
            End If
        Loop Until sLine Is Nothing
        objReader.Close()

        For Each sLine In arrText
            Console.WriteLine(sLine)
        Next
        Console.ReadLine()
    End Sub

End Module
				

Mögliche Probleme

Bei der Verwendung der Datei-E-/A-Funktionalität sollte auf folgende mögliche Probleme geachtet werden:
  • Beim Zugriff auf eine Datei besteht die Möglichkeit, dass die zu lesende bzw. zu schreibende Datei sich nicht auf dem System befindet, oder dass sie gerade verwendet wird.
  • In diesem Beispiel wird der gesamte Dateiinhalt in den Speicher eingelesen und erst dann verarbeitet. Möglicherweise ist die Datei so umfangreich, dass sie nicht vollständig in den Arbeitsspeicher geladen werden kann. Darüber hinaus ist es möglich, dass Sie nicht über die erforderlichen Berechtigungen für den Zugriff auf die Datei verfügen.
Trifft eine dieser Bedingungen zu, wird eine Ausnahme ausgelöst. Es wird daher empfohlen, einen try...catch-Block für die Behandlung dieser häufig auftretenden Probleme bereitzustellen.
Hinweis Dies ist ein Artikel, der im Schnellverfahren direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden als Reaktion auf neue Probleme wie besehen bereitgestellt. Da dieser Artikel im Schnellverfahren erstellt wurde, kann er Tippfehler enthalten und zu einem späteren Zeitpunkt ohne vorherige Ankündigung überarbeitet werden. Weitere zu berücksichtigende Informationen finden Sie in den Nutzungsbedingungen.

Eigenschaften

Artikel-ID: 302309 - Geändert am: Dienstag, 2. Juli 2013 - Version: 1.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Keywords: 
kbvs2005applies kbvs2005swept kbhowtomaster KB302309
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com