VB.NET Textdatei schreiben

VB.NET Textdatei schreiben
VB.NET Textdatei schreiben

VB.NET Textdatei schreiben

Wenn Du in VB.NET eine Textdatei schreiben möchtest, bist Du hier in diesem Beitrag genau richtig!

Das von Textdateien verwendete Format findet fast überall Anwendung, daher ist es kein Wunder, dass gerade dieses Format das am einfachsten zu Lesende ist.

Falls Du Dich alternativ dafür interessieren solltest, wie Du eine Textdatei auslesen kannst, schaue doch gerne auch in meinem anderen Beitrag VB.NET Textdatei einlesen vorbei.

Code

Gestalte Dir für den folgenden Schritt am besten eine ähnliche Oberfläche wie die hier drunter und im Anschluss legen wir mit dem Code los:

VB.NET Textdatei erstellen GUI

Datei schreiben

Erforderliche Klassen und Methoden

Die Möglichkeit zur Erstellung, bzw. Schreiben, Lesen und anderen dateibezogene Operationen finden wir in der File-Klasse.

Wenn man in der .NET Framework Dokumentation nach unserem benötigten Begriff „write“ sucht, findet man folgende aktuell wichtige Methoden:

WriteAllText(filepath, contents)

Diese Methode schreibt die übergebenen Zeichen in eine Textdatei in den angegebenen Dateipfad.

Wenn die Datei nicht schon existiert, wird sie erstellt und andernfalls überschrieben.

WriteAllText(filepath, contents, encoding)

Hier passiert alles eigentlich analog zur Methode hier drüber, allerdings wird in diesem Fall das Encoding ausdrücklich angegeben.

WriteAllTextAsync(filepath, contents, cancellationToken)

Diese Methode ist noch relativ neu und steht erst in eurem Projekt ab dem .NET 5 Framework zur Verfügung.

Besonders bei großen, bzw. größeren Dateien zeigt diese Methode ihre Vorteile durch den asynchronen Dateizugriff.

Los geht’s

Gehe nun z. B. über den Form-Designer und einem Doppelklick auf den Button in den Ereignishandler für das Button Klick-Ereignis.

Die Datei können wir dann wie folgt in unserem Handler erstellen, bzw. schreiben:

    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

Im ersten Schritt hole ich mir den Dateipfad für die geplante Datei und entferne eventuelle Leerzeichen am Anfang und Ende.

Den Inhalt der zu erstellenden Datei legen wir in die Variable „content“, Welcher dem Text der „tbContent“-Textbox entspringt.

Im letzten Schritt beginne ich dann mit dem Schreiben der Textdatei, dazu habe ich verschiedene weitere Methoden angelegt.

WriteFileSync(filepath, content)

Hier findet die wohl simpelste Variante statt, Text in eine Textdatei zu schreiben.

Wir führen die „WriteAllText„-Methode der File-Klasse mit passenden Parameter wie den Dateipfad und den zu schreibenden Zeichen, sprich dem Inhalt aus.

Den Schreibvorgang selbst habe ich mit einem „Try Catch“-Block zum Abfangen globaler Fehler verziert.

WriteFileWithEncodingSync(filepath, content)

Neben unserer Angabe eines expliziten Encodings passiert hier nichts anderes als im Beispiel hier drüber.

WriteFileAsync(filepath, content)

Dies ist die oben bereits angesprochene neue Variante, eine Datei zu schreiben, ansonsten ist es eigentlich gleich der ersten Methode „WriteFileSync“.

Kompletter Code – VB.NET Textdatei schreiben

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

Downloads

Schreibe einen Kommentar

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