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.
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