2010-08-02 18 views
8

Tengo una carpeta en la que continuamente se vuelcan archivos nuevos. En Java, ¿cuál es la mejor forma de detectar cambios en el sistema de archivos (es decir, una carpeta especificada en la que se están volcando los archivos) y agregue los archivos recién llegados a una estructura de datos de cola para que pueda procesar secuencialmente cada archivo entrante.Java detecta cambios en el sistema de archivos

Conozco la función listFiles() en la clase File pero al usar esto solo puedo obtener los archivos que están disponibles en un instante. Por supuesto, puedo sondear continuamente la carpeta y obtener la lista de archivos usando una secuencia. Pero, ¿es esta la mejor manera o hay una mejor manera de lograr esto?

+0

pregunta más genérica, que no requiere directorios específicos: http://stackoverflow.com/questions/494869/file-changed-listener-in-java –

Respuesta

8

continuamente de votación es la manera de hacerlo en Java a partir de ahora - aunque no sondee con demasiada frecuencia, puede ser una operación bastante pesado si el directorio contiene una gran cantidad de entradas

JDK 7 tendrá una API específica para hacer precisamente esto java.nio.file.WatchFile

+2

1 de WatchFile –

+2

Se podía haber vinculado el Javadoc de instaed una estúpida búsqueda en Google – Sylar

+0

Las encuestas continuas son una mala idea. Recomiendo usar JNotify, que aprovecha las notificaciones del sistema de archivos. – Arnelism

4

Desafortunadamente, no existe una forma estándar de hacerlo hasta que salga JDK7. Pero hay algunas bibliotecas disponibles en Internet que usan las funciones nativas de diferentes sistemas operativos para hacer esto.

Las bibliotecas que he mirado son jPoller y jNotify Pero al final me terminaron simplemente el directorio de votación que era interesante para mí cuando tuve que hacer eso.

Cuestiones relacionadas