Чтение файла построчно в C #
Я пытаюсь прочитать некоторые текстовые файлы, где каждая строка должна быть обработана. На данный момент я просто использую StreamReader, а затем читаю каждую строку в отдельности.
Мне интересно, есть ли более эффективный способ (с точки зрения LoC и читабельности) сделать это с помощью LINQ без ущерба для операционной эффективности. Примеры, которые я видел, включают загрузку всего файла в память, а затем его обработку. В этом случае, однако, я неНе думаю, что это будет очень эффективно. В первом примере файлы могут иметь размер около 50 КБ, а во втором примере не все строки файла должны быть прочитаны (размеры обычно < 10k).
Вы можете утверждать, что в настоящее время это неЭто действительно важно для этих небольших файлов, однако я считаю, что подобный подход приводит к неэффективному коду.
Первый пример:
// Open file
using(var file = System.IO.File.OpenText(_LstFilename))
{
// Read file
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Ignore empty lines
if (line.Length > 0)
{
// Create addon
T addon = new T();
addon.Load(line, _BaseDir);
// Add to collection
collection.Add(addon);
}
}
}
Второй пример:
// Open file
using (var file = System.IO.File.OpenText(datFile))
{
// Compile regexs
Regex nameRegex = new Regex("IDENTIFY (.*)");
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Check name
Match m = nameRegex.Match(line);
if (m.Success)
{
_Name = m.Groups[1].Value;
// Remove me when other values are read
break;
}
}
}