2012-05-10 31 views
8

Kullanmakta olduğum şey aşağıda. Çalışırken, programım 10,000 veya daha fazla satır gibi oldukça büyük bir dosya saymaya çalışırken kilitleniyor. Küçük dosyalar hiçbir zaman çalışmaz.Metin dosyasındaki satırları saymanın daha iyi bir yolu var mı?

Metin dosyasındaki satırları saymanın daha iyi bir yolu var mı?

İşte şu anda kullanıyorum ne:

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 

cevap

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

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

this soruya bakın.

+0

Çok güzel ... VB için biraz değiştirmem gerekti, ama önceki gün ve gece gibi görünüyor! – Muhnamana

+3

Lol, çimdik. Cevap zaten VB'deydi, ama sadece noktalı virgül ekledi. Üzgünüm, bunu açıklamak zorunda kaldım. – Suamere

2

Yinelemenizi olabildiğince verimli hale getirseniz bile, işi gerçekleştirirken uygulamayı donduracak kadar büyük bir dosyaya uzatırsanız.

Kilitlemeyi önlemek istiyorsanız, yeni bir iş parçacığı oluşturabilir ve çalışmayı eşzamansız olarak gerçekleştirebilirsiniz. .NET 4.0 kullanıyorsanız, bunu yapmak için Task sınıfını kullanabilirsiniz.

0
TextBox2.Text = File.ReadAllLines(scannerfilePath).Length.ToString() 
İlgili konular