Load/split 一个 .txt 到多个列表框。?
Load/split a .txt into multiple listboxes.?
我正在尝试找到一种方法来加载一个非常大的 .txt 文件,并认为如果我将它分成几个部分(列表框),它会加载得更快并且更容易操作,延迟更少。或者有没有办法与后台工作者进行 OFD?
这是我加载 .txt
的方式
TextBox1.Text = ""
OpenFileDialog1.Title = "Load File"
OpenFileDialog1.InitialDirectory = "C:temp"
OpenFileDialog1.ShowDialog()
Dim path As String = OpenFileDialog1.FileName
TextBox1.Text = path
Dim lines() As String = IO.File.ReadAllLines(TextBox1.Text)
如果有帮助,我可以进去用分隔符标记 .txt 的每 1/4 部分吗?
我在想,如果我遍历 XX 行,然后遍历下一个列表框等。也许在 if not 语句中使用某种形式的 items.count?我的思绪在原地转圈,请让我朝着最好的方向前进。我的文件是 25.MB 并且增长缓慢。 Notepad++ 是唯一能很好处理 ATM 的东西。
ListBox1.Items.Add(lines(1 - 10000))
引发错误 ("Outside array index or similar")
ListBox1.Items.Add(lines(10000))
加载单行
可能与此类似。这不是 100% 准确的代码。但给你一个想法。
Dim dt As New DataTable()
Dim lines As New List(Of [String])()
lines = New List(Of [String])(File.ReadLines(ofDialog.FileName))
Task.Run(Function()
Dim options As New ParallelOptions()
options.MaxDegreeOfParallelism = CInt(1)//Number of threads to spawn
Parallel.ForEach(lines, options, Function(line)
dt.Rows.Add()
End Function)
Me.Invoke(DirectCast(Sub() listview.DataSource = dt, MethodInvoker))
End Function)
我正在尝试找到一种方法来加载一个非常大的 .txt 文件,并认为如果我将它分成几个部分(列表框),它会加载得更快并且更容易操作,延迟更少。或者有没有办法与后台工作者进行 OFD? 这是我加载 .txt
的方式 TextBox1.Text = ""
OpenFileDialog1.Title = "Load File"
OpenFileDialog1.InitialDirectory = "C:temp"
OpenFileDialog1.ShowDialog()
Dim path As String = OpenFileDialog1.FileName
TextBox1.Text = path
Dim lines() As String = IO.File.ReadAllLines(TextBox1.Text)
如果有帮助,我可以进去用分隔符标记 .txt 的每 1/4 部分吗? 我在想,如果我遍历 XX 行,然后遍历下一个列表框等。也许在 if not 语句中使用某种形式的 items.count?我的思绪在原地转圈,请让我朝着最好的方向前进。我的文件是 25.MB 并且增长缓慢。 Notepad++ 是唯一能很好处理 ATM 的东西。
ListBox1.Items.Add(lines(1 - 10000))
引发错误 ("Outside array index or similar")
ListBox1.Items.Add(lines(10000))
加载单行
可能与此类似。这不是 100% 准确的代码。但给你一个想法。
Dim dt As New DataTable()
Dim lines As New List(Of [String])()
lines = New List(Of [String])(File.ReadLines(ofDialog.FileName))
Task.Run(Function()
Dim options As New ParallelOptions()
options.MaxDegreeOfParallelism = CInt(1)//Number of threads to spawn
Parallel.ForEach(lines, options, Function(line)
dt.Rows.Add()
End Function)
Me.Invoke(DirectCast(Sub() listview.DataSource = dt, MethodInvoker))
End Function)