necesita un fragmento de código que leería las últimas "n líneas" de un archivo de registro. Se me ocurrió el siguiente código de la red. Soy un poco nuevo en C sharp. Dado que el archivo de registro puede ser bastante grande, quiero evitar la sobrecarga de la lectura del archivo completo. ¿Puede alguien sugerir alguna mejora en el rendimiento? I realmente no quiero leer cada carácter y cambiar de posición.Cómo leer las últimas "n" líneas del archivo de registro
var reader = new StreamReader(filePath, Encoding.ASCII);
reader.BaseStream.Seek(0, SeekOrigin.End);
var count = 0;
while (count <= tailCount)
{
if (reader.BaseStream.Position <= 0) break;
reader.BaseStream.Position--;
int c = reader.Read();
if (reader.BaseStream.Position <= 0) break;
reader.BaseStream.Position--;
if (c == '\n')
{
++count;
}
}
var str = reader.ReadToEnd();
No puede utilizar un StreamReader así. – SLaks
eche un vistazo a http://stackoverflow.com/questions/1271225/c-reading-a-file-line-by-line. Luego puede usar la extensión LINQ '.Last()' en IEnumerable para obtener las últimas N líneas –
@Russ: No, no puede. LINQ no puede proporcionarle eficientemente las últimas _n_ líneas. – SLaks