11

下面是我一直在使用的。虽然它确实有效,但我的程序在尝试计算一个相当大的文件时锁定,比如 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
4

3 回答 3

39
Imports System.IO.File 'At the beginning of the file

Dim lineCount = File.ReadAllLines("file.txt").Length

看到这个问题。

于 2012-05-10T17:47:29.203 回答
2

即使您尽可能高效地进行迭代,如果您将其交给一个足够大的文件,您也会让应用程序在执行工作时冻结。

如果您想避免锁定,您可以生成一个新线程并异步执行工作。如果您使用的是 .NET 4.0,您可以使用Task类来简化此操作。

于 2012-05-10T17:49:27.597 回答
0
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString()
于 2015-07-31T23:06:43.980 回答