VB.NET Textdatei einlesen
Inhaltsverzeichnis
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:
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