Speichern einer linie eines textdokuments?

  • VB.NET

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

    Speichern einer linie eines textdokuments?

    System.IO.File.ReadAllLines(Application.StartupPath & "\Frangen\Frage1\A.txt")(5)
    Ist ja zum lesen
    aber wie kann man speichern?

    IO.File.WriteAllLines(Application.StartupPath & "\Frangen\Frage1\A.txt", TextBox1.text)(5)

    Was muss ich ändern?

    Bitte hilft mir.
    Danke
    Ja klar,


    Theorie:

    Ich würde eine List of benutzen und jede Zeile mit einem filestream auslesen und speichern, dann kannst du z.B. Zeile 10 verändern, auslesen und auch löschen und so weiter...
    Wenn die Zeile dann verändert wurde, dann einfach wieder per Filestream reinschreiben. fertig

    Praxis:

    Ich benutze nun alles in Funktionen, das kannst du dann von miraus einfach kopieren, wenn du es nicht verstehst, aber trotzdem erkläre ich es natürlich:

    Als erstes eine Globale List Of generieren, diese wird dann die Zeilen enthalten:

    VB.NET-Quellcode

    1. Private Lines As New List(Of String)



    VB.NET-Quellcode

    1. Private Sub File_auslesen(ByVal Pfad As String)
    2. 'Die Liste der Zeilen leeren
    3. Lines.Clear()
    4. 'Neuen Streamreader erzeugen, welcher die Zeilen ausliest.
    5. Dim streamr As New IO.StreamReader(Pfad)
    6. 'Solange neue Zeilen hinzufügen, bis keine mehr da sind.
    7. While Not streamr.EndOfStream
    8. Lines.Add(streamr.ReadLine())
    9. End While
    10. 'Stream wieder schließen
    11. streamr.Close()
    12. 'und Daten freigeben.
    13. streamr.Dispose()
    14. End Sub
    15. Private Sub File_speichern(ByVal Pfad As String)
    16. 'Neuer Streamwriter, welcher den Text neu in die Datei schreiben soll.
    17. Dim streamw As New IO.StreamWriter(Pfad, False)
    18. 'Für jede Zeile die in der Liste ist eine zeile schreiben.
    19. For Each line As String In Lines
    20. streamw.WriteLine(line)
    21. Next
    22. 'Naja dazu brauch ich nichts sagen, er schließt halt den Streamwriter wieder und leert ihn.
    23. streamw.Flush()
    24. streamw.Close()
    25. streamw.Dispose()
    26. End Sub
    27. Private Function Zeile_aus_Liste_Lesen(ByVal Zeilenindex As Long)
    28. 'List das Item bei der Position aus und gibt es aus
    29. Return Lines.ElementAt(Zeilenindex).ToString
    30. End Function
    31. Private Sub Zeile_aus_Liste_Loeschen(ByVal Zeilenindex As Long)
    32. 'Löscht das Item bei der Position aus der Liste
    33. Lines.RemoveAt(Zeilenindex)
    34. End Sub



    Denke die Erklärungen im Code sind ausreichend oder?



    Aufrufen kannst du alles so:


    Eine Txt kannst du so auslesen:

    VB.NET-Quellcode

    1. File_auslesen("C:\Test.txt")


    Den Text in eine Txt schreiben:

    VB.NET-Quellcode

    1. File_speichern("C:\Test.txt")


    Text der zeile ausgeben:

    VB.NET-Quellcode

    1. Textbox1.Text = "Zeilentext: (" & Zeile_aus_Liste_Lesen(10) & ")"


    Löschen kannst du eine Zeile so:

    VB.NET-Quellcode

    1. Zeile_aus_Liste_Loeschen(10)


    Benutzen kannst du es inerhalt einer Methode.

    Der Code ist nicht getestet, sollte aber funktionieren, wenn ich keine Fehler gebaut habe ^^



    Fragen?

    Eltarion

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eltarion“ ()

    Du musst unterscheiden:
    Soll der Text als Feld einzelner Zeilen oder als ein Gesamttext vorliegen?

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim path As String = "c:\Temp\text.txt"
    3. Dim aa As String = IO.File.ReadAllText(path) ' Text auslesen
    4. Dim bb() As String = IO.File.ReadAllLines(path) ' Zeilen auslesen
    5. Dim cc() As String = aa.Split(vbLf) ' aus dem Text die Zeilen generieren
    6. Dim txt As String = Nothing ' aus den Zeilen den Text generieren
    7. For Each line As String In aa
    8. txt &= line & vbLf
    9. Next
    10. IO.File.WriteAllText(path, aa) ' Text abspeichern
    11. IO.File.WriteAllLines(path, bb) ' Zeilen abspeichern
    12. 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!