首页 > 解决方案 > 未正确读取文本文件

问题描述

我想当我阅读 txt 文件并添加 ListBox1.items 时,添加此文本http://prntscr.com/on12e0正确文本 §eUltra §8[§716x§8].zip 不像这个http://prntscr.com /on11kv

我的代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
    My.Computer.FileSystem.CopyFile(
    appDataFolder & "\.minecraft\logs\latest.log",
    appDataFolder & "\.minecraft\logs\latestc.log")

    Using reader As New StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\.minecraft\logs\latestc.log")


        While Not reader.EndOfStream
            Dim line As String = reader.ReadLine()
            If line.Contains(" Reloading ResourceManager: Default,") Then
                Dim lastpart As String = line.Substring(line.LastIndexOf(", ") + 1)

                ListBox1.Items.Add(lastpart)
            End If
        End While
    End Using
    My.Computer.FileSystem.DeleteFile(appDataFolder & "\.minecraft\logs\latestc.log")
End Sub

标签: vb.net

解决方案


这个问题与您的第一个问题的不同之处在于您已将 ListBox 替换为 RichTextBox。您的第一个问题似乎得到了完全可以接受的答案。但我会再试一次。

首先获取文件的路径。我不知道你为什么要复制文件,所以我没有。

将 Imports System.IO 添加到文件的顶部。您可以使用 File 类方法。File.ReadAllLines返回一个字符串数组。

接下来使用 Linq 获取您想要的项目。不要在循环的每次迭代中更新用户界面。不可见的 Linq 循环只是将项目添加到数组中。然后您可以使用 更新 UI 一次.AddRange

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim appDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "\.minecraft\logs\latest.log")
    Dim lines = File.ReadAllLines(appDataFolder)
    Dim lstItems = (From l In lines
                    Where l.Contains(" Reloading ResourceManager: Default,")
                    Select l.Substring(l.LastIndexOf(", ") + 1)).ToArray
    ListBox1.Items.AddRange(lstItems)
End Sub

如果此答案和您得到的前 2 个答案不起作用,请告诉我们原因。


推荐阅读