Leyendo un archivo línea por línea en C #
Estoy tratando de leer algunos archivos de texto, donde es necesario procesar cada línea. En este momento solo uso un StreamReader y luego leo cada línea individualmente.
Me pregunto si hay una forma más eficiente (en términos de LoC y legibilidad) para hacer esto usando LINQ sin comprometer la eficiencia operativa. Los ejemplos que he visto implican cargar todo el archivo en la memoria y luego procesarlo. En este caso, sin embargo, no creo que sea muy eficiente. En el primer ejemplo, los archivos pueden llegar a aproximadamente 50k, y en el segundo ejemplo, no es necesario leer todas las líneas del archivo (los tamaños suelen ser <10k).
Se podría argumentar que hoy en día no importa mucho para estos archivos pequeños, sin embargo, creo que ese tipo de enfoque conduce a un código ineficiente.
Primer ejemplo:
// 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);
}
}
}
Segundo ejemplo:
// 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;
}
}
}