以下是我一直在使用的内容。虽然它确实有效,但我的程序在尝试计算一个相当大的文件时会锁定,例如10,000行或更多行。较小的文件立即运行。
是否有更好的或者我应该更快地计算文本文件中的行数?
以下是我目前正在使用的内容:
Dim selectedItems = (From i In ListBox1.SelectedItems).ToArray()
For Each selectedItem In selectedItems
ListBox2.Items.Add(selectedItem)
ListBox1.Items.Remove(selectedItem)
Dim FileQty = selectedItem.ToString
'reads the data file and returns the qty
Dim intLines As Integer = 0
'Dim sr As New IO.StreamReader(OpenFileDialog1.FileName)
Dim sr As New IO.StreamReader(TextBox1_Path.Text + "\" + FileQty)
Do While sr.Peek() >= 0
TextBox1.Text += sr.ReadLine() & ControlChars.CrLf
intLines += 1
Loop
ListBox6.Items.Add(intLines)
Next
答案 0 :(得分:29)
Imports System.IO.File 'At the beginning of the file
Dim lineCount = File.ReadAllLines("file.txt").Length
请参阅this问题。
答案 1 :(得分:2)
即使你使迭代效率尽可能高,如果你把它交给一个足够大的文件,你就会在执行工作时冻结应用程序。
如果要避免锁定,可以生成新线程并异步执行工作。如果您使用的是.NET 4.0,则可以使用Task类来实现这一目的。
答案 2 :(得分:0)
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString()