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 に答える