VB.NET文本文件的最后一行未显示

VB.NET文本文件的最后一行未显示,vb.net,file,text,file-io,Vb.net,File,Text,File Io,我在vb.net windows窗体中创建了这个名为Go的游戏。游戏结束后,会出现一个比赛细分屏幕。其中一个特点是排行榜。我已经创建了一个文本文件,其中存储了该游戏中每个玩家的总点数,因此可以在屏幕上显示。在游戏结束后,我通过将新分数附加到文本文件来更新分数。如果玩家是新玩家,则会创建新记录。所有记录都将显示在表格的排行榜中 我遇到的问题是,当一个新玩家玩游戏时,会创造一个新记录。但是,它不会显示在排行榜上。我很感激你能给我的任何建议,我仍然是VB编程的初学者。下面是代码的摘录: fil

我在vb.net windows窗体中创建了这个名为Go的游戏。游戏结束后,会出现一个比赛细分屏幕。其中一个特点是排行榜。我已经创建了一个文本文件,其中存储了该游戏中每个玩家的总点数,因此可以在屏幕上显示。在游戏结束后,我通过将新分数附加到文本文件来更新分数。如果玩家是新玩家,则会创建新记录。所有记录都将显示在表格的排行榜中

我遇到的问题是,当一个新玩家玩游戏时,会创造一个新记录。但是,它不会显示在排行榜上。我很感激你能给我的任何建议,我仍然是VB编程的初学者。下面是代码的摘录:

    filename = "F:\My Go project flood fill2\Text files\leaderboard.txt"
    files = My.Computer.FileSystem.OpenTextFileWriter(filename, True) 'leaderboard
    files.Close()
    Dim leaderboardpath As String = IO.File.ReadAllText(filename)
    Dim lines() As String = IO.File.ReadAllLines(filename)

    ...

    ElseIf leaderboardpath.Contains(handikomi(0, 0)) Then 'If one of the players has a record in text file
        For i As Integer = 0 To lines.Length - 1
            newline = lines(i)
            'append line to new score for black
            Dim currentscore As String
            currentscore = newline.Split(New String() {","}, StringSplitOptions.None)(1).Split(",")(0)
            Dim tempscore As Decimal = currentscore
            currentscore = tempscore + btotalscore
            newline = newline.Split(New String() {","}, StringSplitOptions.None)(0).Split(",")(0) & ", " & currentscore & ", " & newline.Split(New String() {","}, StringSplitOptions.None)(2).Split(",")(0) & ", " & newline.Split(New String() {","}, StringSplitOptions.None)(3).Split(",")(0)
            lines(i) = newline
        Next
        IO.File.WriteAllLines(filename, lines)

        files = New StreamWriter(filename, True) 'leaderboard
        files.WriteLine(handikomi(1, 0) & ", " & wtotalscore & ", 0, 1") 'Writes new record to the file
        files.Close()

        ...

    EndIf

    ...

    leaderlbl.Text = "Leader Board"
    Dim leaderboard As String
    For i As Integer = 0 To lines.Length - 1
        leaderboard = leaderboard & " | " & lines(i)
        leaderlbl.Text = leaderlbl.Text & vbNewLine & lines(i).Split(New String() {","}, StringSplitOptions.None)(0).Split(",")(0) & "  " & lines(i).Split(New String() {","}, StringSplitOptions.None)(1).Split(",")(0)
    Next

您显示的用于编写排行榜的代码片段使用了lines变量,但我没有看到在为新玩家添加分数后更新lines变量的代码。解决这个问题的一个快速而肮脏的方法是在附加一行后重新读取文件。只需将添加新玩家分数的代码片段更改为如下内容:

files = New StreamWriter(filename, True) 'leaderboard
files.WriteLine(handikomi(1, 0) & ", " & wtotalscore & ", 0, 1") 'Writes new record to the file
files.Close()
lines() As String = IO.File.ReadAllLines(filename) 'Update lines()