2011-03-02 16 views
5

Sto codificando in C# e utilizzando Windows Form. Ho un file di testo e voglio contare tutte le righe che ci sono dentro.Conteggio di righe in un file di testo

Pietro; 25

Giovanni; 31

Jane; 22

Quello è tre linee e voglio contarli, per esempio.

risposta

6

Il modo migliore sarebbe quello di usare qualcosa come:

var count = File.ReadLines("file.txt").Count(); 

che funzioneranno solo in .NET 4, ma leggerà una sola riga alla volta. Se siete abbastanza felice di caricare l'intero file nella memoria in una sola volta, è possibile utilizzare:

var count = File.ReadAllLines("file.txt").Length; 

Si noti che se il file è di grandi dimensioni (o è su un'unità di rete, ecc), questo potrebbe richiedere un lungo tempo, nel qual caso vorresti farlo fuori dal thread dell'interfaccia utente.

+1

Dove è EnumerateAllLines definito? –

+0

Ho usato var count = File.ReadAllLines ("file.txt"). Length; e ha funzionato benissimo, grazie mille! –

+0

@Simon: Il mio errore, è File.ReadLines. Ho risolto la risposta. Ancora solo da .NET 4 però. –

2

Se il file non è troppo grande, si può fare questo:

File.ReadAllLines(filePath).Length; 

(questo sarà destinare l'intero file, in modo da assicurarsi le prestazioni non è un problema)

+0

Thnaks per la risposta e ha funzionato, ma ho usato la risposta sopra. –

1
 string fileName = @"X:\Testfolder\countthis.txt"; 
     int lineCount = 0; 

     FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); 

     StreamReader reader = new StreamReader(fs); 
     Assert.Fail(); 

     while (reader.ReadLine() != null) 
      lineCount++; 
     return lineCount; 
+0

Dovresti usare C# usando l'istruzione o assicurati di chiamare Dispose sul FileStream –

+0

Oh sì, non ci avevo pensato :-) Scusa – Morten

Problemi correlati