Pregunta

para un proyecto reciente que necesito para detectar cambios en el sistema de archivos en un recurso compartido Samba asignada desde Java en Windows: Crea, actualiza y elimina. Por el momento estoy usando un sondeo en la carpeta que mantiene una lista de archivos y su marca de tiempo modificado para buscar eventos.

Pero mi problema es que este sondeo en la carpeta sólo se asoma a la carpeta en determinados momentos (cada 10 segundos, por ejemplo), por lo que un archivo actualizado puede actualizar dos veces entre las dos encuestas, sin reconocer.

¿Hay alguna manera de obtener los eventos de ventanas dentro de Java cada vez que un evento de archivos occours en que mappep compartición Samba?

Gracias!

¿Fue útil?

Solución

Java no tiene nada en la corriente IO API para tratar con las notificaciones de archivos desde el O / S.

Java 7 tendrá una nueva API IO JSR-203 que tiene un reloj de archivos API que, o bien el uso nativo strong> o S notificaciones o sondeo Si las notificaciones no son

Mientras tanto usted podría mirar para ver si alguien ha puesto en marcha una biblioteca que le permite conectar en el S notificaciones a través de JNI O /. Creo que IntelliJ IDEA utiliza una librería nativa para este propósito.

Mirando en Sourceforge que he encontrado jfilenotify , pero i' nunca he usado.

Si lo prefiere puede aumentar su frecuencia de muestreo (pero esto va a comenzar a martillar su sistema de archivos) o cambiar cómo se escriben los archivos a cabo mediante la adición de una número de versión al nombre de archivo / carpeta de modo que se puede deducir fácilmente cuando algo ha cambiado.

Otros consejos

De acuerdo con esta entrada foro TeamDev JNIWrapper es capaz de hacer esto como lo quiero. Acabo de comprar una copia. Gracias y

Greetz, Ghad

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top