2016-07-13 14 views
9

Können sagen, ich habe eine Datei und will die Zeilen lesen, es ist:Stream zu lesen Spektrum Linien

while(!streamReader.EndOfStream) { 
     var line = streamReader.ReadLine(); 
    } 

Wie lese ich nur eine Reihe von Linien? Nur Leseleitungen von 10 bis 20.

Antwort

11

schlage ich Linq ohne Leser mit:

var lines = File 
    .ReadLines(@"C:\MyFile.txt") 
    .Skip(10) // skip first 10 lines 
    .Take(10); // take next 20 - 10 == 10 lines 

    ... 

    foreach(string line in lines) { 
    ... 
    } 

Bei Sie den Leser verwenden, können Sie so etwas wie dieses

// read top 20 lines... 
    for (int i = 0; i < 20 && !streamReader.EndOfStream; ++i) { 
    var line = streamReader.ReadLine(); 

    if (i < 10) // ...and skip first 10 of them 
     continue; 

    //TODO: put relevant code here 
    } 
+0

die Linq-Ansatz ist viel mehr umsetzen können elegant aber ich würde die 'var linien = ..' loswerden und gerade in einer schleife 'foreach (strichzeile in File.Readlines ...' – Ted

+0

Es ist eleganter, aber es liest die * gesamte * Datei in den Speicher zuerst, d oder nicht? Dies ist möglicherweise keine gute Idee für größere Dateien ... –

+1

@Thorsten Dittmar: Nein! '.ReadLines' ist nicht' .ReadAllLines' (bitte beachten Sie 'Alle') –