Mit System.IO.StreamWriter einem weiteren Zeile zu schreiben
-
03-10-2019 - |
Frage
Ich brauche die Schüler mit einer neuen Partitur zu aktualisieren, aber ich kann es zu schreiben, um die Linie, dass die aktuellen Punktzahl Studenten es zu bekommen. Es löscht nur den gesamten Text.
Alex, letmein, 0 David, qwerty1,0 John, Passwort, 0 Paul, Löwe, 0 Luke, bennett, 0 Ronald, Mcdonald, 0 Erin, Deutsch, 0 Laura, Schottland, 0 Ross, extra, 0 Alan, Getränk, 0
Try
fileName = "C:\Documents and Settings\Student\Desktop\Task10\primary4.txt"
Dim sWriter As New System.IO.StreamWriter(fileName)
index = lblPosition.Text
sWriter.Write(username(index))
sWriter.Write(",")
sWriter.Write(password(index))
sWriter.Write(",")
sWriter.WriteLine(updatescore(position)
sWriter.Close()
MessageBox.Show("Writing file to disk")
Me.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Lösung
Sie können nicht eine bestimmte Zeile in einer Textdatei aktualisieren. Sie können nur eine Textdatei von Grund auf neu zu schreiben oder ihm anhängen. Und das ist nicht das, was Sie hier wollen.
Sie haben File.ReadAllLines () verwenden, um eine Zeichenfolge zu erhalten [] mit den Zeilen in der Textdatei. Suchen Sie das spezifische Element in dem Feld, das Sie aktualisieren möchten. Dann schreiben sie alle wieder mit File.WriteAllLines ().
Das ist teuer natürlich, aber die Textdatei ist klein. Dies ist der Hauptgrund, warum Datenbank-Engines sind sehr beliebt.
Andere Tipps
Ich sehe zumindest einen zusätzlichen Fehler in hier (eine Ausnahme in dem Verlassen der Datei öffnen würde). Sie sollten so etwas wie dies stattdessen tun:
fileName = "C:\Documents and Settings\Student\Desktop\Task10\primary4.txt"
Dim sWriter As IO.StreamWriter
Try
sWriter = New IO.StreamWriter(fileName, True)
index = lblPosition.Text
sWriter.Write(username(index))
sWriter.Write(",")
sWriter.Write(password(index))
sWriter.Write(",")
sWriter.WriteLine(updatescore(position)
MessageBox.Show("Writing file to disk")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
sWriter.Close()
End Try
Me.Close()