Разбор текстового файла с помощью LINQ - PullRequest
1 голос
/ 28 января 2011

Я знаю, что обычно вы используете File.ReadAllLines, но я пытаюсь сделать это с загруженным файлом.

Могу ли я как-нибудь поместить его во временную папку? Или прочитать из памяти?

Мне удалось заставить это работать

1 Ответ

4 голосов
/ 28 января 2011

Это string, Stream или как? в любом случае, вы хотите TextReader - вопрос просто StringReader против StreamReader. Если у вас есть , что , я бы сделал что-то вроде:

public static IEnumerable<string> ReadLines(TextReader reader) {
    string line;
    while((line = reader.ReadLine()) != null) yield return line;
}

затем с любым читателем, я могу либо пользователь:

foreach(var line in ReadLines(reader)) {
    // note: non-buffered - i.e. more memory-efficient
}

или

string[] lines = ReadLines(reader).ToArray();
// note: buffered - all read into memory at once (less memory efficient)

т.е. если это Stream вы читаете из:

using(var reader = new StreamReader(inputStream)) {
    foreach(var line in ReadLines(reader)) {
        // do something fun and interesting
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...