VB.NET Textdatei erstellen
Inhaltsverzeichnis
VB.NET Textdatei erstellen
Wenn Du in VB.NET eine Textdatei erstellen möchtest, bist Du hier in diesem Beitrag genau richtig!
Das von Textdateien verwendete Format ist wohl das am einfachsten zu Verstehende und daher ist es kein Wunder, dass es fast überall Anwendung findet.
Falls Du Dich auch dafür interessieren solltest, wie Du eine Textdatei einlesen kannst, schaue auch in meinem Beitrag VB.NET Textdatei einlesen vorbei.
Code
Klicke Dir am besten folgende GUI zurecht und im Anschluss starten wir dann mit dem Code:
Datei schreiben
Benötigte Klassen und Methoden
Um mit Dateien zu arbeiten stoßen wir zuallererst über die File-Klasse, wo wir Möglichkeiten für gängige Operationen wie das Schreiben und Lesen finden.
Wenn wir nach unserem englischen Wunsch-Begriff „write“ suchen, finden wir die folgenden für uns aktuell wichtigen Methoden:
WriteAllText(filepath, contents)
Hiermit können wir die angegebenen Zeichen in eine Textdatei an den angegebenen Ort schreiben.
Falls die Datei nicht existiert, wird sie erstellt und ansonsten überschrieben.
WriteAllText(filepath, contents, encoding)
Hier passiert alles eigentlich so wie in der Methode hier drüber, jedoch wird in diesem Fall das Encoding explizit angegeben.
WriteAllTextAsync(filepath, contents, cancellationToken)
Hier haben wir eine relativ neue Methode, Welche nur ab .NET 5 verfügbar ist.
Sie schreibt die Datei asynchron ins Dateisystem, was sich natürlich besonders bei größeren Dateien bemerkbar machen kann.
Los geht’s
Mache nun im Form-Designer einen Doppelklick auf den Button, oder generiere den Klick-Ereignishandler im Code–Fenster via Comboboxen.
Im daraus entstehenden Klick–Ereignishandler schreiben wir dann wie folgt unsere Datei:
Private Sub btnWriteFile_Click(sender As Object, e As EventArgs) Handles btnWriteFile.Click Dim filepath = tbFilepath.Text.Trim() Dim content = tbContent.Text WriteFileSync(filepath, content) ' WriteFileWithEncodingSync(filepath, content) ' WriteFileAsync(filepath, content) End Sub
Zuerst greife ich hier den Dateipfad für die entstehende Datei ab und entfernen eventuelle nachstehende oder führende Leerzeichen.
Dann lege ich den Inhalt der zu erstellenden Datei in der Variable „content“ fest, Welche aus der Text-Eigenschaft der „tbContent“-Textbox kommt.
Zum Schluss starte ich dann mit dem Schreiben der Textdatei selbst, dazu habe ich verschiedene weitere Methoden angelegt.
WriteFileSync(filepath, content)
Hier findet die wohl einfachste Variante statt, eine Textdatei zu schreiben.
Wir rufen die „WriteAllText„-Methode der File-Klasse mit passenden Parameter wie den Dateipfad und den zu schreibenden Inhalt auf.
Den Schreibvorgang selbst habe ich mit Try-Catch zum globalen Abfangen eines Fehlers ummantelt.
WriteFileWithEncodingSync(filepath, content)
Eigentlich passiert hier alles analog zur oberen Methode davon abgesehen, dass wir hier ein explizites Encoding angeben.
WriteFileAsync(filepath, content)
Hierbei handelt es sich um die oben bereits angesprochene neue Variante, eine Datei zu schreiben, ansonsten ist es analog zur ersten Methode „WriteFileSync“.
Kompletter Code – VB.NET Textdatei erstellen
Imports System.IO Public Class Form1 Private Sub btnWriteFile_Click(sender As Object, e As EventArgs) Handles btnWriteFile.Click Dim filepath = tbFilepath.Text.Trim() Dim content = tbContent.Text WriteFileSync(filepath, content) ' WriteFileWithEncodingSync(filepath, content) ' WriteFileAsync(filepath, content) End Sub Private Sub WriteFileSync(filepath As String, content As String) Try File.WriteAllText(filepath, content) Catch ex As Exception MessageBox.Show("Couldn't write file sync: " & ex.Message) End Try End Sub Private Sub WriteFileWithEncodingSync(filepath As String, content As String) Dim encoding = System.Text.Encoding.UTF8 Try File.WriteAllText(filepath, content, encoding) Catch ex As Exception MessageBox.Show("Couldn't write file sync with encoding: " & ex.Message) End Try End Sub ' only available with .NET 5 ' not in .NET Framework Apps 'Private Sub WriteFileAsync(filepath As String, content As String) ' Try ' File.WriteAllTextAsync(filepath, content) ' Catch ex As Exception ' MessageBox.Show("Couldn't write file async: " & ex.Message) ' End Try 'End Sub End Class