无法读取文本文件中的多行 vb.net

Unable to read multiple lines in text file vb.net

我不确定我做错了什么我正在尝试读取一个文本文件,其中包含许多文件路径以及文件名和扩展名。我已经设法拆分文件路径和文件名以添加到我的字典,然后将其添加到列表框。

问题是我的代码重复读取同一行。任何人都可以就我出错的地方提出建议。文本文件格式为...

C:\Users\User\Desktop\Musictrack3@01。 Aerosmith & 运行 DMC - 走这条路 (1986).mp3 C:\Users\User\Desktop\Musictrack3@01。 INXS - 今晚我需要你 (1988).mp3

我使用 @ 字符来帮助分隔文件路径和名称。

    Dim lines = File.ReadAllLines("tmp.txt")
        'read from a file
        Dim line As String
        Using reader As New StreamReader("tmp.txt")
            line = reader.ReadLine()
            Dim str = line
            Dim split = str.Split("@")
            Dim FilePathValue As String
            Dim FileNameKey As String

            If (split.Count = 2) Then
                FilePathValue = split(0).ToString()
                FileNameKey = split(1).ToString()
                '
            End If
            ' Load items into the music dictionary
            For i = 0 To lines.Length - 1 Step 2
                MsgBox("Path should not be blank??? = " & 
    FilePathValue & " File Name = " & FileNameKey)
                MusicDictionary.Add(FileNameKey(i), FilePathValue(i))
                UpdateTheDictionary()
            Next

            'Here we need to load the filename into the dropdown items
            For Each item In MusicDictionary
                'Dim x = 
    MusicToolStripMenuItem.DropDownItems.Add(item.Key)
                'AddHandler x.Click, AddressOf ToolMenuItem_Click
            Next

        End Using

谢谢

您阅读文件两次:

你把文件读入数组

Dim lines = File.ReadAllLines("tmp.txt")

然后你也开始读一遍,这次是“逐行”的方式,但你只读了第一行:

Using reader As New StreamReader("tmp.txt")
line = reader.ReadLine()

您处理第一行,提取文件名等,然后通过遍历您读取的数组在同一行上重复操作:

For i = 0 To lines.Length - 1 Step 2

希望你能理解你的第一条指令读取文件的所有行,将它们读入内存的一部分中的数组,然后再次读取第一行,将另一个变量放入内存的不同部分,并且这两项数据之间完全没有link。遍历数组不会改变 line 变量的内容(也不会再次执行拆分等)


怎么办?

删除现有的for循环,并将Using替换为For Each line in lines,并调试结果。要调试,请将光标放在代码的第一行,按 F9 使其变为红色,然后 运行 程序。当第一行上的所有内容都以黄色标记停止时,您可以使用调试菜单上的步骤 Over/Into/Out 命令来检查代码(使用它们的快捷键,更容易)