none
In eine bestimmte Zeile einer txt Datei etwas schreiben. RRS feed

  • Frage

  • Hallo Leute!

    Ich möchte in einer Datei (z.b. .txt), in eine bestimmte Zeile etwas hineinschreiben.

    Bis jetzt, liest mein Programm nur die bestimmte Zeile aus, jedoch möchte ich diese bestimmte Zeile ändern.

    Gruß,

    Dennis Nemec

    Samstag, 26. Februar 2011 19:58

Antworten

Alle Antworten

  • Hallo Dennis

    solange die Textdatei von der Grösse her vollständig geladen werden kann, dann etwa:

    File.ReadAllLines-Methode
    http://msdn.microsoft.com/de-de/library/system.io.file.readalllines.aspx

    File.WriteAllLines-Methode
    http://msdn.microsoft.com/de-de/library/bsz3b1wh.aspx

    wobei man damit die Zeilen ganz einfach 1:1 als String-Array behandeln kann, aka Zeilennummer wird wie Zugriff per Array-Index.

    Samstag, 26. Februar 2011 20:03
  • Hallo Thomas,

    Danke für deine Antwort, jedoch werden nicht alle Zeilen der Datei gelesen.

    Ich habe es so gemacht, dass wenn man auf Aktualisieren klickt, wird die angegebene Zeile, in der Textbox angezeigt. Man kann alles verändern in der Textbox, jedoch hat dies keine Auswirkungen auf die Datei, in der es geändert werden soll.

    Code:

     

    
    Dim fs As New FileStream(
    "C:\Dokumente und Einstellungen\Dennis Nemec\Desktop\cbrepack\server\settings.conf", FileMode.Open)
    Dim sr As New StreamReader(fs)
    Dim zeile As String
    Dim zaehler As Integer = 0
    Do Until sr.Peek() = -1
    zeile = sr.ReadLine
    zaehler = zaehler + 1
    If zaehler = 71 Then
    TextBox4.Text &= Mid(zeile, 24, Len(zeile) - 25) & vbCrLf
    End If
    Loop
    sr.Close()

     

    Wenn man dann in der Textbox den Text ändert, soll die änderung übernommen werden.

    Gruß,

    Dennis

    Samstag, 26. Februar 2011 20:12
  •  

      Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged
        Dim fs As New FileStream("C:\Dokumente und Einstellungen\Dennis Nemec\Desktop\cbrepack\server\settings.conf", FileMode.Open)
        Dim sr As New StreamReader(fs)
        Dim zeile As String
        Dim zaehler As Integer= 0
    
        Do Until sr.Peek() = -1
    
          zeile = sr.ReadLine
          zaehler = zaehler + 1
    
          If zaehler = 71 Then
            TextBox4.Text &= Mid(zeile, 24, Len(zeile) - 25) & vbCrLf
          End If
        Loop
    
        sr.Close()
    
      End Sub

    MFG M. D.
    Samstag, 26. Februar 2011 21:46
  • Hallo Dennis,

    Folge den Weg der Dir Thomas gesagt hat: „wobei man damit die Zeilen ganz einfach 1:1 als String-Array behandeln kann, aka Zeilennummer wird wie Zugriff per Array-Index.“…ist doch so Einfach:

     

    Imports System.IO
    
    Public Class Form1
    
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      Dim myArray As String()
      myArray = StrArrayErstellen("C:\TEMP\Sample_problems.txt")
     End Sub
    
     Public Function StrArrayErstellen(ByVal pathName As String) As String()
      Return System.IO.File.ReadAllLines(pathName)
     End Function
    End Class
    

     

    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,

    Robert

    Mittwoch, 2. März 2011 09:45
    Moderator