Textdatei zeile auslesen, ändern und wieder speichern an gleicher stelle?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Textdatei zeile auslesen, ändern und wieder speichern an gleicher stelle?

    Hey leute,

    ich wollte per TextBox eine bestimmte Zeile in einer .txt datei auslesen, diese per TextBox ändern und am besten wieder mit einem Button speichern. o.ä.

    Aber ich komme momentan nicht wirklich weiter und hoffe irgendjemand kann mir da weiter helfen..

    Gruß Delivery.
    @ErfinderDesRades Jou.
    @Delivery Willkommen im Forum. :thumbup:
    Es gab mal Lösungen, wo eine Datei byteweise überschrieben wurde, die sind heute allerdings lange überholt.
    Wenn Du eine sehr lange Datei hast, lies sie zeilenweise ein bearbeite die Zeilen und schreib sie zeilenweise neben die alte Datei.
    Wenn Du fertig bist, lösch die alte und benenn die neue um.
    Das sieht dann ungefähr so aus:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim name = "c:\temp\test.txt"
    3. Dim name2 = "c:\temp\test.tmp"
    4. For Each line In IO.File.ReadLines(name)
    5. line &= "bla" ' was mit der Zeile tun
    6. IO.File.AppendAllLines(name2, New String() {line})
    7. Next
    8. IO.File.Delete(name)
    9. IO.File.Move(name2, name)
    10. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey leute,

    danke für die schnelle antwort

    Das mit dem Read haut nun hin.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim Lines() As String = IO.File.ReadAllLines("C:/test.txt")
    3. TextBox1.Text = Lines(0)
    4. TextBox2.Text = Lines(1)
    5. TextBox3.Text = Lines(2)
    6. End Sub


    Aber das mit dem Button Save als Write nicht so wirklich. Wollte es so probiere, aber das klappt leider nicht :/

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim Lines() As String
    3. TextBox1.Text = Lines(0)
    4. TextBox2.Text = Lines(1)
    5. TextBox3.Text = Lines(2)
    6. IO.File.WriteAllLines("C:/test.txt", Lines)
    7. End Sub


    Gruß, Delivery. :)

    Delivery schrieb:

    aber das klappt leider nicht
    Ja was passiert denn mit Deinem String-Array? - Nüscht. ;)
    Zu musst diesem die Werte zuweisen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Lines() = New String(2) {}
    3. Lines(0) = TextBox1.Text
    4. Lines(1) = TextBox2.Text
    5. Lines(2) = TextBox3.Text
    6. IO.File.WriteAllLines("C:\temp\test.txt", Lines)
    7. End Sub
    oder noch kürzer

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim Lines() = {TextBox1.Text, TextBox2.Text, TextBox3.Text}
    3. IO.File.WriteAllLines("C:\temp\test.txt", Lines)
    4. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!