VB.NET Textdatei einlesen

VB.NET Textdatei einlesen
VB.NET Textdatei einlesen

VB.NET Textdatei einlesen

Du möchtest in VB.NET eine Textdatei einlesen, dann bist Du in meinem heutigen Beitrag genau richtig!

Als gängiges Dateiformat ist die Textdatei eigentlich überall, bzw. jedem Computernutzer bekannt

Es ist kein Wunder, dass jeder Entwickler einmal an den Punkt kommt, Diese verarbeiten zu müssen.

Falls Du Dich für weitere Beiträge bezüglich der Textdatei interessierst, kannst Du dir auch meinen VB.NET Textdatei schreiben-Beitrag anschauen.

Textdateien

Die Verwendungsmöglichkeiten von Textdateien sind vielfältig und durch Ihr meist leserliches Format sicherlich einfacher zu verstehen als „rohe Binärdateien“.

Selbstverständlich werden Textdateien im Hintergrund auch binär gespeichert, allerdings werden Diese sequenziell, also im Sinne eines Zeichensatzes interpretiert.

Textdateien enthalten neben den üblichen Buchstaben, Zahlen und Sonderzeichen auch gewisse Steuerzeichen, wie z. B. den Zeilenumbruch, etc.

Bekannte Formate

Neben Ihrer fachlichen Definition werden Aufgrund der ich nenne es mal „Eindeutschung„, fast alle einigermaßen leserlichen Dateien als Textdateien bezeichnet.

Das, obwohl diese Dateien häufig z. B. auch eingebettete Bilder und somit wesentlich komplexere binäre Daten beinhalten.

Schauen wir uns einmal die fast jedem Nutzer bekannten Dateiformate an:

.txt

Das wohl bekannteste und auch gängigste Dateiformat, Welches man meiner Meinung nach praktisch als Mutter der Textdateien bezeichnen könnte.

.rtf

RTF – ausgeschrieben Rich Text Format – ist ein Format, Welches zum plattformunabhängigen Austausch von Texten verschiedener Betriebssystem.

Dabei beinhaltet es neben dem reinen Text auch zusätzliche Informationen, wie die Schriftgröße, Schriftart und mehr.

.md

Das Markdown-Format (kurz MD) ist eine von John Gruber und Aaron Swartz entworfene Auszeichnungssprache im Textformat.

Es verfolgt das Ziel, eine für Menschen einfach lesbare Form bereits im Ausgangsformat bereitzustellen.

Code – VB.NET Textdatei einlesen

So, genug geschwafelt, jetzt gehen wir über zum Code, um eine Textdatei zu lesen 😉!

Benötigte Klasse(n)

Zuerst schauen wir danach, welche bereits vorhandenen Klassen aus dem Microsoft .NET Framework verwenden könnten.

Wenn wir in der Dokumentation des Frameworks schauen, finden wir die File-Klasse mit welcher wir – wie zu erwarten – dateibasierte Operationen durchführen können.

Benötigte Methode(n)

Die besonders für unser Beispiel benötigten Methoden wären unter dem Begriff „Read“ zu finden und sind Folgende:

ReadAllText(path)

Unsere erste und einfachste Methode wäre ReadAllText, Welche eine Textdatei öffnet, den Inhalt liest und die Datei anschließend wieder schließt.

ReadAllText(path, encoding)

Analog zur oberen Methode, nur das wir hier die Möglichkeit haben, ein gewähltes Encoding mitzugeben.

ReadAllTextAsync(path, cancellationToken)

Sie gibt uns den gesamten gelesenen Inhalt der Textdatei als Zeichenfolge, also als String wieder.

ACHTUNG: Diese Methode gibt es nur unter „.NET 5 Anwendungen“, jedoch nicht unter den „.NET Framework Apps“

Los geht’s – VB.NET Textdatei einlesen

Für den Anfang kannst Du Dir eine ähnliche Oberfläche bestehend aus 2 Labels, 2 Textboxen und einen Button (wie die Folgende) zurechtklicken:

VB.NET Textdatei einlesen GUI
VB.NET Textdatei einlesen GUI

Nachdem die Steuerelemente vernünftig benannt sind, können wir mit dem Code des Buttons starten:

    Private Sub btnReadFile_Click(sender As Object, e As EventArgs) Handles btnReadFile.Click
        Dim filepath = tbFilepath.Text.Trim()
        If Not File.Exists(filepath) Then
            MessageBox.Show("Please provide an existing filepath..")
            Return
        End If
        ReadFileSyncSample(filepath)
    End Sub

Im ersten Schritt ziehe ich mir den gewählten Filepath aus der Textbox und schneide durch Trim die eventuell führenden und nachstehenden Leerzeichen ab.

Danach prüfe ich, ob die angegebene Datei, bzw. der Dateipfad existiert und verlasse die Sub – wie immer nach Early Return Prinzip – sofort, falls nicht.

Unten angekommen starten wir dann letztendlich eine weitere Methode.

Der Lesevorgang

Simpel

Hier wäre eine beispielhafte und einfache Demonstration, wie man eine Textdatei in VB.NET einlesen und in unserer tbContent darstellen kann:

    Private Sub ReadFileSyncSample(filepath As String)
        Dim contents = File.ReadAllText(filepath)
        tbContent.Text = contents
    End Sub

Mit Encoding

Alternativ könnten wir für den Lesevorgang auch noch ein Encoding mitliefern, damit bestimmte besondere Zeichen wie Umlaute korrekt dargestellt werden:

    Private Sub ReadFileSyncSampleWithEncoding(filepath As String)
        Dim encoding = System.Text.Encoding.UTF8
        Dim contents = File.ReadAllText(filepath, encoding)
        tbContent.Text = contents
    End Sub

Asynchron seit .NET 5

Zu guter Letzt gibt es seit .NET 5 auch noch die asynchrone Variante, Welche besonders bei Dateioperationen mit großen Dateien von Vorteil sein kann:

    Private Async Function ReadFileAsyncSample(filepath As String) As Task
        Dim contents = Await File.ReadAllTextAsync(filepath)
        tbContent.Text = contents
    End Function

Kompletter Code – VB.NET Textdatei einlesen

Imports System.IO

Public Class Form1

    Private Sub btnReadFile_Click(sender As Object, e As EventArgs) Handles btnReadFile.Click
        Dim filepath = tbFilepath.Text.Trim()
        If Not File.Exists(filepath) Then
            MessageBox.Show("Please provide an existing filepath..")
            Return
        End If
        ReadFileSyncSample(filepath)
        ' ReadFileSyncSampleWithEncoding(filepath)
        ' ReadFileAsyncSample()
    End Sub

    Private Sub ReadFileSyncSample(filepath As String)
        Dim contents = File.ReadAllText(filepath)
        tbContent.Text = contents
    End Sub

    Private Sub ReadFileSyncSampleWithEncoding(filepath As String)
        Dim encoding = System.Text.Encoding.UTF8
        Dim contents = File.ReadAllText(filepath, encoding)
        tbContent.Text = contents
    End Sub

    ' only works in .NET 5 App
    ' not in .NET Framework App
    'Private Async Function ReadFileAsyncSample(filepath As String) As Task
    '    Dim contents = Await File.ReadAllTextAsync(filepath)
    '    tbContent.Text = contents
    'End Function

End Class

Downloads

Icons made by Freepik from www.flaticon.com

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.