Como posso seguir um arquivo como "Tail -f" em Java sem manter o arquivo aberto (Evitar renomear / excluir)

Eu gostaria de "Tail -f" um monte de arquivos de log de dentro de um aplicativo java.

Consegui que isso funcionasse, monitorando o tamanho e a última atualização e abrindo repetidamente o arquivo e lendo os últimos bytes sempre que o tamanho do arquivo ou a hora da última atualização fosse alterada - e fechando-o imediatamente.

Isso parece problemático porque eu posso tê-lo aberto quando o logger decide renomear o arquivo que causará algum tipo de problema.

Também gostaria de detectar um arquivo "Rolado" com um mecanismo mais seguro do que perceber que o tamanho do arquivo foi reduzido ... parece propenso a erros, mas improvável.

Desde que eu não pareça ter acesso ao descritor de arquivos ou outros utilitários de arquivos de baixo nível, eu posso não conseguir reproduzir o comportamento do tail - mas há algum truque para ler um arquivo sem "Bloquear" para renomear / deletar ( Windows 7)

Eu acho que outra possibilidade é realmente gerar um processo tail -f e ler a saída do processo, mas isso parece um pouco pesado - estou digitalizando como 60 arquivos de log aqui, alguns dos quais têm muita saída (a maioria estará ociosa).

questionAnswers(3)

yourAnswerToTheQuestion