2012-05-10 70 views
8

A continuación se muestra lo que he estado usando. Mientras funciona, mi programa se bloquea cuando intenta contar un archivo bastante grande, digamos 10,000 o más líneas. Archivos más pequeños se ejecutan en poco tiempo.¿Hay alguna forma mejor de contar las líneas en un archivo de texto?

¿Existe alguna manera mejor o más conveniente de contar las líneas en un archivo de texto?

Aquí es lo que estoy usando actualmente:

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 

Respuesta

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

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

Ver this cuestión.

+0

Muy bueno ... Tuve que ajustarlo un poco para VB, pero parece que día y noche de antes! – Muhnamana

+3

Lol, tweak. La respuesta ya estaba en VB, pero él simplemente agregó accidentalmente el Semicolon. Perdón, me disculpé y tuve que señalarlo. – Suamere

2

Incluso si hace que su iteración sea lo más eficiente posible, si le entrega un archivo suficientemente grande, congelará la aplicación mientras realiza el trabajo.

Si desea evitar el bloqueo, podría engendrar un nuevo hilo y realizar el trabajo de forma asíncrona. Si usa .NET 4.0, puede usar la clase Task para que esto sea muy fácil.

0
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString() 
Cuestiones relacionadas