Tail -f

Olá pessoal,

Estou implementando um software de monitoração de um arquivo e queria umas idéias pra eu fazer algo bacana … com o mesmo efeito que o comando tail -f que vai exibindo o conteúdo do arquivo a medida que ele vai sendo alterado, é possível?

No meu caso o problema é que terei um arquivo grande (+/- 10M) sendo atualizado a cada 5 minutos via FTP, o FTP escreve o arquivo todo (nao eh append) e eu quero mostrar soh as ultimas linhas … mas nao queria ficar movendo o ponteiro no arquivo toda hora, queria mesmo era deixa-lo aberto e ir movimentando o ponteiro (nem testei ainda), é possível?

valeus

Creio que usando a classe RandomAccesFile você consiga!

Voce vai precisar guardar a posição do arquivo no teu programa. E usar um RandomAccessFile como o Daniel sugeriu. Isso pq quando o ftp sobrescrever teu arquivo teu fd vai apontar por antigo.

Olá

Ganhe tempo concentrando-se no seu problema e deixando o tail fazer o papel dele. No ambiente Unix-like você já conhece o tail. No DOS use o Tail.exe que pode ser baixado de http://members.aol.com/_ht_a/bergert/DOSutil/DOSutil.htm

Achei no google outros utilitários que nunca usei em http://www.profsoftware.com/unixdos/ud09.htm

Não acho que seja útil a aplicação que descreveu mas há também tail para Windows, procure por tailme.

[]s
Luca

JTail to the rescue! :smiley:

http://www.crbn.com/elsid/jtail/jtail.htm

Olá

Pequeno problema com JTail:

[]s
Luca

Eita, eu achei isso tb, mas não acontece, o fd continua válido após a atualização via FTP, inclusive a posição do FileChannel fica legal.

Ficou belezinha … agora preciso de um jeito fácil de colocar as linhas num textfield sem perder performance :slight_smile:

Valeus

[]s

Mas, e se, por FTP, o arquivo todo for sobrescrito?

sim sim … todo o arquivo é sobrescrito … com put mesmo … e mesmo assim eu consigo continuar trabalhando com o FileChannel dele.

Depois vou postar o código por aqui, é bem simples. (vou refatorar pra tirar os testes e tudo mais, pra nao fazer feio :lol: )

Bem, voce está supondo que o arquivo apenas contem novas linhas: as antigas continuam iguais. Mas e se o arquivo for alterado por inteiro ?
A não ser que seja garantido que somente seja “adicionado” novas linhas, certo ? :roll:

Que coisa louca, pra que serve um troço desse ? :stuck_out_tongue:
Fiquei curioso…

[quote=“brlima”]Que coisa louca, pra que serve um troço desse ? :stuck_out_tongue:
Fiquei curioso…[/quote]

Uso muito no unix pra acompanhar um log (soh esse uso pra essa funcionalidade, o tail faz outras coisitas).

E sim, ele soh lê o fim do arquivo, nao fica comparando pra ver se mudou alguma outra coisa.

Só para acrescentar informações:

Comando tail para Windows:

Programas de Tail em Java:
http://www.fishcroft.ca (JTail 2.1 - Licensa GPL)
http://www.smart-tail.com