2009-07-08 11 views
25

Estoy buscando una biblioteca Java que me pueda notificar acerca de los cambios en el sistema de archivos.¿Existe un monitor de sistema de archivos sofisticado para Java que sea de software gratuito o de código abierto?

Encontré algunas bibliotecas gratuitas, pero todas usan detección de fuerza bruta, es decir, sondeo en intervalos regulares. Y los otros son siempre comerciales.

Lo que estoy buscando es una biblioteca que utiliza las funciones del monitor de archivos del sistema operativo, es decir FindFirstChangeNotification para Win32, FAM para Linux y lo que está disponible en otros sistemas operativos. No me importa si se usa fuerza bruta como respaldo, pero para Windows y Linux debería usar las funciones disponibles del sistema operativo.

+2

Esta pregunta parece estar fuera de tema porque este es un sitio de programación. Consulte [Qué temas puedo preguntar aquí] (http://stackoverflow.com/help/on-topic) en el Centro de ayuda. Tal vez [Recomendaciones de software Stack Exchange] (https://softwarerecs.stackexchange.com/) sería un mejor lugar para preguntar. – jww

+0

Java 7 presentó [WatchService] (https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html). –

Respuesta

25

JNotify parece hacer lo que necesita.

Sondear un sistema de archivos (por ejemplo, un directorio para los cambios de tiempo de actualización) no impondrá una carga significativa en su sistema, y ​​no debe descontarse. Aplicaciones como Tomcat, etc. usan esto para administrar despliegues activos con pocos problemas.

No es mucha ayuda ahora, pero el próximo Java 7 tiene un WatchService precisamente para esto.

4

¿Por qué tiene que ser Java?

La biblioteca que va a utilizar la API específica de la plataforma debe tener código nativo, por lo que esencialmente la biblioteca va a ser envoltorios alrededor del código nativo que hace que el uso de las diferentes API sea transparente.

Sugiero que si no encuentra la biblioteca en su auto, tendrá que utilizar la fuerza bruta como la llama o llamar a la API nativa utilizando JNI para cada plataforma.

+0

Sí, eso es esencialmente lo que sería una biblioteca, una envoltura. Pero esperaba que algo así ya existiera. (Existe, pero no fuente libre/abierta) –

7

Si se siente cómodo trabajando en la punta de lanza de Java, echar un vistazo a JSR 203: More New I/O APIs aka nio2 que saldrá en Java 7.

API

Una nueva interfaz de sistema de archivos que soporta acceso masivo a presentar atributos, notificación de cambio, escape para el sistema de ficheros específicos, y una interfaz de proveedor de servicios de implementaciones de sistemas de archivos enchufables;

6

jpathwatch es otra opción. Implementa la API de Java 7 para el monitoreo de directorios, por lo que es fácil realizar el acceso a Java 7 si lo desea.

0

Dos más opciones que Actualmente utilización de votación:

Sin embargo, debido a que ambos proyectos tienen grandes comunidades activas, es probable que ser actualizado en el futuro para soporte Java 7 WatchService (FileSystem.newWatchService()), que usa utilice la plataforma subyacente las instalaciones de notificación de m, si las hay.

Ambas bibliotecas también proporcionan una capa de abstracción útil para integrarse con varios otros transportes y sistemas, de modo que su código de aplicación principal no dependa de las entradas que se reciben de un sistema de archivos.

+1

Un comentario que explique el downvote sería útil ... – Raman

Cuestiones relacionadas