"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo recuperar eficazmente la última línea de un archivo de texto grande?

¿Cómo recuperar eficazmente la última línea de un archivo de texto grande?

Publicado el 2024-11-16
Navegar:722

How to Efficiently Retrieve the Last Line of a Large Text File?

Recuperar la última línea de un archivo de texto grande con eficiencia

Cuando se manejan archivos de texto masivos, recuperar la última línea de manera eficiente es crucial. El acceso aleatorio puede llevar mucho tiempo para archivos grandes, lo que lo hace poco práctico. En su lugar, considere estas soluciones:

Devolver la última línea que no está en blanco:

La función final a continuación recupera rápidamente la última línea que no está en blanco de un archivo sin cargar ni recorriendo todo el archivo. Busca hasta el final del archivo y lee los caracteres hacia atrás hasta que encuentra un salto de línea, luego construye y devuelve la última línea.

public String tail(File file) {
    // ...
    for (long filePointer = fileLength; filePointer != -1; filePointer--) {
        // ...
        sb.append((char) readByte);
    }
    // ...
}

Devolver las últimas N líneas:

Si necesita las últimas N líneas, use la función tail2. Emplea una técnica similar, pero cuenta los saltos de línea para determinar las líneas deseadas antes de invertir y construir la salida.

public String tail2(File file, int lines) {
    // ...
    for (long filePointer = fileLength; filePointer != -1; filePointer--) {
        line = line   1;
        sb.append((char) readByte);
    }
    // ...
}

Invocar y usar:

File file = new File("D:\\stuff\\huge.log");
System.out.println(tail(file));
System.out.println(tail2(file, 10));

Consideraciones Unicode:

La implementación utiliza la inversión de caracteres para reconstruir las líneas. Si bien es generalmente efectivo, esto puede causar problemas de inversión de Unicode con caracteres como acentos y sombreros. Por lo tanto, es esencial realizar pruebas exhaustivas antes de utilizar este enfoque en varios idiomas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3