web-dev-qa-db-fra.com

Existe-t-il un meilleur moyen de compter les lignes dans un fichier texte?

Ci-dessous est ce que j'ai utilisé. Bien que cela fonctionne, mon programme se bloque lorsque je tente de compter un fichier assez volumineux, disons 10 000 lignes ou plus. Les petits fichiers fonctionnent en un rien de temps.

Existe-t-il un meilleur moyen ou devrais-je dire plus rapide pour compter les lignes dans un fichier texte?

Voici ce que j'utilise actuellement:

    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
8
Muhnamana
Imports System.IO.File 'At the beginning of the file

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

Voir ceci question.

28
gliderkite

Même si vous faites en sorte que votre itération soit aussi efficace que possible, si vous lui remettez un fichier assez volumineux, l'application va geler pendant qu'elle effectue le travail.

Si vous souhaitez éviter le verrouillage, vous pouvez créer un nouveau thread et effectuer le travail de manière asynchrone. Si vous utilisez .NET 4.0, vous pouvez utiliser la classe Task pour rendre cela très facile.

2
Justin Helgerson
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString()
0
acidapex