我需要用新分数更新学生分数,但是我无法写出学生当前得分的分数。它只是删除了整个文本。
亚历克斯,letmein,0 大卫qwerty1,0 约翰,密码,0 保罗,狮子,0 卢克,贝内特,0 罗纳德·麦当劳,0 艾琳,德国,0 劳拉,苏格兰,0 罗斯,额外的,0 艾伦,饮料,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
答案 0 :(得分:4)
您无法更新文本文件中的特定行。您只能从头开始重写文本文件或附加到文本文件。这不是你想要的。
您必须使用File.ReadAllLines()来获取带有文本文件中的行的字符串[]。搜索要更新的数组中的特定元素。然后用File.WriteAllLines()写回来。
当然这很昂贵,但你的文本文件很小。这是数据库引擎受欢迎的主要原因。
答案 1 :(得分:1)
我在这里至少看到一个额外的错误(异常会导致文件保持打开状态)。你应该做这样的事情:
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()