Pergunta

para um projeto recente que eu preciso para detectar alterações do sistema de arquivos em um compartilhamento Samba mapeada a partir de Java no Windows: cria, atualiza e remove. No momento eu estou usando uma pesquisa pasta que mantém uma lista de arquivos e sua timestamp modificado para procurar eventos.

Mas o meu problema é que esta sondagem pasta somente espreita para a pasta em determinados momentos (a cada 10 segundos, por exemplo), então um arquivo atualizado pode ser atualizado duas vezes entre duas pesquisas sem reconhecer.

Existe alguma maneira de obter eventos de janelas dentro Java Sempre que um evento arquivo occours nesse mappep Samba share?

Obrigado!

Foi útil?

Solução

Java não tem nada na atual api IO para lidar com notificações de arquivo do O / S.

Java 7 terá uma nova API IO JSR-203 que tem um relógio arquivo API que quer usar nativa o / S notificações ou polling se as notificações não são suportado para detectar alterações de arquivo.

Nesse meio tempo você pode olhar para ver se alguém tem implementado uma biblioteca que lhe permite ligar para o O / S notificações via JNI. Eu acho que IntelliJ IDEA utiliza um lib nativo para esta finalidade.

Olhando no Sourceforge eu encontrei jfilenotify , mas eu' Nunca usei isso.

Alternativamente, você pode aumentar a sua frequência de amostragem (mas isso vai começar a martelar seu sistema de arquivos) ou a mudança como seus arquivos são escritos pela adição de um número da versão para o nome do arquivo / pasta para que você possa facilmente dizer quando algo mudou.

Outras dicas

De acordo com a esta entrada fórum TeamDev JNIWrapper é capaz de fazer isso, como eu quero. Acabei de comprar uma cópia. Obrigado e

Greetz, Ghad

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top