"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como recuperar com eficiência a última linha de um arquivo de texto grande?

Como recuperar com eficiência a última linha de um arquivo de texto grande?

Publicado em 2024-11-16
Navegar:955

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

Recuperando a última linha de um arquivo de texto grande com eficiência

Ao lidar com arquivos de texto enormes, recuperar a linha final com eficiência é crucial. O acesso aleatório pode ser demorado para arquivos grandes, tornando-o impraticável. Em vez disso, considere estas soluções:

Retornar a última linha não em branco:

A função tail abaixo recupera rapidamente a última linha não em branco de um arquivo sem carregar ou percorrendo todo o arquivo. Ele busca o final do arquivo e lê os caracteres de trás para frente até encontrar uma quebra de linha, então constrói e retorna a última linha.

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

Retornar as últimas N linhas:

Se você precisar das últimas N linhas, use a função tail2. Ele emprega uma técnica semelhante, mas conta quebras de linha para determinar as linhas desejadas antes de reverter e construir a saída.

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

Invocar e usar:

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

Considerações Unicode:

A implementação usa reversão de caracteres para reconstruir as linhas. Embora geralmente eficaz, isso pode causar problemas de reversão de Unicode com caracteres como acentos e chapéus. Portanto, testes completos são essenciais antes de usar essa abordagem em vários idiomas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3