¿Puede el sistema operativo decirme cuándo se crea un nuevo archivo?
-
03-07-2019 - |
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
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 .
Cómo ser se notifica el cambio de archivo / directorio en C / C ++, idealmente utilizando POSIX
o busque inotify en stackoverflow obtendrá muchas ideas
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.
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