Bir metin dosyası içinde satır sayısını belirlemek
Program aracılığıyla bir metin dosyası içinde satır sayısını belirlemek için kolay bir yolu var mı?
CEVAP
Eğer kullanıyorsanız .cidden geç gelen edit: NET 4.0 veya üstü
File
sınıf tembel iştahla onları ReadAllLines
gibi bir diziye okuma tüm hatlar yerine sıralar ReadLines
yeni bir yöntem var. Şimdi her ikisi de etkinlik ve sıkıştırma ile olabilir:
var lineCount = File.ReadLines(@"C:\file.txt").Count();
Orijinal Cevap
Değilse de verimliliği hakkında rahatsız iseniz, sadece yazabilirsiniz:
var lineCount = File.ReadAllLines(@"C:\file.txt").Length;
Daha etkili bir yöntem için yapabileceği:
var lineCount = 0;
using (var reader = File.OpenText(@"C:\file.txt"))
{
while (reader.ReadLine() != null)
{
lineCount ;
}
}
Edit: verimlilik . ilgili sorulara yanıt
İkinci daha verimli olduğunu söyledim nedeni bellek kullanımı, ille Hızı ile ilgili. İlk olarak çok az dosya boyutu olarak hafıza tahsis etmek gerekir anlamına gelen bir dizi içine yükler dosyasının tüm içeriğini. İkinci hiç belleğin bir satır değerinden fazla bir zaman ayırmak için sadece bir defada bir satır döngüler. Bu değil, önemli dosyaları için küçük, ama daha büyük dosyalar olabilir bir sorun (eğer denerseniz ve sayısını bul hatlarında 4GB dosya üzerinde bir 32-bit sistem, Örneğin, orada sadece yeterli değil kullanıcı modu adres alanı için tahsis bir dizi bu büyük).
Hız açısından çok fazla olmasını beklemiyorum. ReadAllLines bazı iç optimizasyon olma ihtimali yok, ama diğer taraftan hafızanın büyük bir kısmını ayırmak zorunda olabilir. ReadAllLines küçük dosyalar için daha hızlı, ama büyük dosyalar için önemli ölçüde daha yavaş olabilir; sadece bir Kronometre ya da kod oluşturucu etkisi olacaktır ama tahmin ediyorum.
Bir Metin İçinde Bul ve Değiştir bir B...
Neden bu Windows toplu iş dosyası yaln...
Sil belirli bir satır numarası(ler) bi...
'okumak için en hızlı yol ne bir ...
Nasıl Vim içinde birden fazla satır sa...