2012-05-10 10 views
8

以下は私が使ってきたものです。それが動作している間、私のプログラムはかなり大きなファイル、例えば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 

答えて

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

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

this質問を参照してください。

+0

非常にうれしい...私はVBのためにそれを少し微調整しなければならなかったが、前から昼と夜のように思える! – Muhnamana

+3

Lol、tweak。答えはVBで既にだったが、彼はちょうどセミコロンを誤って追加した。申し訳ありません、私はlawl'dとそれを指摘していた。 – Suamere

2

できるだけ効率的な反復を行っても、十分な大きさのファイルを渡すと、作業を実行している間にアプリケーションがフリーズするようになります。

ロックを避けたい場合は、新しいスレッドを生成して非同期で作業を実行できます。 .NET 4.0を使用している場合は、Taskクラスを使用すると非常に簡単にできます。

0
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString() 
関連する問題