2016-07-13 2 views

ответ

11

Я предлагаю использовать Linq без читателя:

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) { 
    ... 
    } 

В случае, если вы должны использовать читатель, вы можете реализовать что-то вроде этого

// 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

LINQ подхода является гораздо более элегантный, но я бы избавился от 'var lines = ..' и перешел прямо в цикл' foreach (строка строки в File.Readlines ... ' – Ted

+0

Это более элегантно, но он считывает * весь * файл в память во-первых, d не так ли? Это не может быть хорошей идеей для больших файлов ... –

+1

@Thorsten Dittmar: Нет! '.ReadLines' не' .ReadAllLines' (пожалуйста, заметьте 'All') –

Смежные вопросы