En utilisant System.IO.StreamWriter pour écrire une autre ligne
-
03-10-2019 - |
Question
Je dois mettre à jour les étudiants score avec un nouveau score mais je ne peux pas l'obtenir pour écrire à la ligne que les étudiants score au moment. Il supprime tout le texte.
Alex, letmein, 0 David, qwerty1,0 John, mot de passe, 0 Paul, lion, 0 Luc, bennett, 0 Ronald, Mcdonald, 0 Erin, allemand, 0 Laura, en Écosse, 0 Ross, en sus, 0 Alan, boisson, 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
La solution
Vous ne pouvez pas mettre à jour une ligne spécifique dans un fichier texte. Vous ne pouvez réécrire un fichier texte à partir de zéro ou d'ajouter à elle. Ce qui est pas ce que vous voulez ici.
Vous devez utiliser File.ReadAllLines () pour obtenir une chaîne [] avec les lignes dans le fichier texte. Rechercher l'élément spécifique dans le tableau que vous souhaitez mettre à jour. Ensuite, écrivez tout retour avec File.WriteAllLines ().
est cher bien sûr, mais votre fichier texte est petit. C'est la raison principale pour laquelle les moteurs de base de données sont très populaires.
Autres conseils
Je vois au moins un bug supplémentaire ici (une exception aurait pour effet de laisser l'ouverture de fichier). Vous devriez faire quelque chose comme ceci:
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()