Pregunta

Quiero saber cuándo se crea un nuevo archivo en un directorio específico, en lugar de escanear el directorio de vez en cuando.

Entiendo que hay una manera de hacer que el sistema operativo le diga a mi programa que se creó un nuevo archivo. ¿Cómo funciona?

Como se ha señalado, esto tiene similitudes con Cómo ser notificado del archivo / cambio de directorio en C / C ++, idealmente utilizando POSIX

¿Fue útil?

Solución

Depende de qué sistema operativo.

En Windows, la API base sería Cambio de directorio Notificaciones .

Dado que menciona Linux en las etiquetas, esta sería la inotify API .

Para agregar a la respuesta de OS X, a partir de 10.5, desea que FSEvents API .

Otros consejos

En Linux, consulte Inotify .

FAM proporciona una interfaz de observación de archivos consistente en todos los UNIX. En Linux, el daemon back-end puede ser reemplazado por Gamin , pero un programa vinculado con FAM trabajará con Gamin muy bien. (Detrás de escena, es posible que FAM use el sondeo y que Gamin use inotify o dnotify o kqueue, pero no debería preocuparse por la implementación).

OS X.5 tiene FSEvents , que es muy diferente, ya que monitorea todo el sistema en lugar de archivos y directorios específicos, pero también satisface sus necesidades.

En Windows, consulte Buscar (Primero | Siguiente | Cerrar) ChangeNotification or ReadDirectoryChanges .

FileSystemWatcher es la respuesta, y funciona de forma recursiva.

Hay un ejemplo aquí (busque FileSystemWatcher)

Con Mac OS X, esta funcionalidad forma parte de la API de Spotlight.

Al usar .Net en Windows (si no está seguro de Linux / mono), puede usar un FileSsytemWatcher para buscar nuevos archivos y generar eventos cuando se crean.

Desde MSDN:

  

Use FileSystemWatcher para observar   Cambios en un directorio especificado. usted   Puede ver los cambios en los archivos y   subdirectorios de los especificados   directorio. Puedes crear un componente   para ver archivos en una computadora local, un   unidad de red, o una computadora remota.

Página de MSDN

La API de Windows proporciona funciones para monitorear el sistema de archivos; aquí hay un ejemplo http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx

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