Escutar chegada de arquivo!

Qual é uma maneira legal e eficiente de escutar um determinado diretório para saber sobre a chegada de um arquivo? Ou seja, quando um arquivo for gravado em determinado local, eu devo fazer alguma coisa com ele. Alguém que saiba, ou precisou fazer algo assim, por favor, postem duas dicas.

Desde já, Obrigado. Att

Olá.

Talvez não seja a alternativa mais eficiente. Mas qdo precisei fazer isso que que vc percisando, criei um thread que a cada X segundos acessava o diretório.

abraços.

Ola Rafael!

Tem um FileSystem aqui que voce adicionar um listener:
http://commons.apache.org/vfs/

Mas no fundo ele tambe vai criar uma thread para ficar verificando de X em X tempos… (acho)

bem se vc não sabe quem vai gravar o arquivo poderia fazer oque o amigo palmadias disse
ficar varrendo o diretorio de tempo em tempo
agora se vc sabe que vai gravar se é sua aplicação que vai ta gravando o arquivo
vc poderia implementar o padrao listener para quando gravar disparar um evento e dai
executar uma ação

Ok, Varrer o arquivo é uma forma simples, mas talvez não seja a melhor no meu caso. Esqueci de dizer que o arquivo vem de um servidor, talvez via socket, pode ser que ele demore um bom tempo e a varredura iria consumir processamento em vão. Eu já pensei em fazer com varredura, mas fico com um pé atraz, porque, sabe como é, estou acostumado com J2SE e novo em Java ME, neste caso com tantas restricoes dos dispositivos móveis, ainda não me acostumei e fico sempre preocupado processamento desnecessário. rsrs

att

O consumo de processamento na busca do arquivo é muito pequeno. Não imagino que ira impactar. Mas como não conheço o seu contexto, posso tá falando besteira.

abraços.

Fora o que o palmadias sugeriu, seria interessante que a aplicação que está criando o arquivo nesse tal diretório, SE POSSÍVEL, faça o seguinte:

a) Crie o tal arquivo com um nome um pouco diferente, enquanto ela está gravando o arquivo;
b) Finalmente, renomeie o arquivo para o nome correto.

Por exemplo, se o tal diretório recebe arquivos .dat, você pode solicitar à tal aplicação criar o tal arquivo com o nome .dat.tmp e quando ela acabar de transferir os bytes, renomear o arquivo .dat.tmp para .dat. Aí você só processa os arquivos .dat, não os arquivos .dat.tmp.

É que se você simplesmente deixar a tal aplicação já criar o arquivo com o nome definitivo enquanto ela está transferindo os bytes, pode ser que você acabe lendo um arquivo incompleto, o que é indesejável.