使用System.IO.StreamWriter写另一行

时间:2010-09-17 13:44:30

标签: vb.net arrays streamwriter

我需要用新分数更新学生分数,但是我无法写出学生当前得分的分数。它只是删除了整个文本。

亚历克斯,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

2 个答案:

答案 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()