write txt readfilesync node for filesystem example create changes appendfile filesystems node.js filesystemwatcher

filesystems - txt - readfilesync node js example



Node.JS: ¿Cómo funciona “fs.watchFile”? (2)

De acuerdo con los documentos de la API para el nodo 0.4.3 , la función fs.watchFile(filename, [options], listener) inicia una rutina que

Esté atento a los cambios en el filename de filename . Se llamará al oyente de callback llamada cada vez que se acceda al archivo.

También dice

Las options si se proporcionan, deben ser un objeto que contenga dos miembros: booleano, persistent e interval , un valor de sondeo en milisegundos.

Lo que indica que comprobará cada cierto tiempo en función de lo que está en el intervalo. Pero también dice

El valor predeterminado es { persistent: true, interval: 0 } .

Entonces, ¿eso significa que comprobará cada milisegundo para ver si la hora del archivo cambió? ¿Escucha eventos a nivel de SO? ¿Cómo funciona?


Para ampliar la fantástica respuesta de tjameson, puede usar watchr para normalizar la API entre las diferencias de nodo versosn y observación de sistemas operativos. También proporciona eventos para unlink y new lugar de solo change , así como también agrega soporte para ver el árbol de directorios.


Sí, cpedros es correcto, esto parece ser un duplicado. Aunque creo que puedo arrojar algo más de luz sobre esto.

Cada sistema operativo tiene su propio evento de cambio de archivo que se activa. En Linux, es inotify (que solía ser dnotify), en Mac es fsevents, y en Windows es FileSystemWatcher. No estoy seguro de si el código subyacente maneja cada caso, pero esa es la idea general.

Si solo desea ver un archivo en Linux, recomiendo node-inotify-plus-plus . Si desea ver un directorio, use inotify-plus-plus con node-walk . He implementado esto y funcionó a la perfección.

Puedo publicar algún código si estás interesado. La belleza de node-inotify-plus-plus es que abstrae gran parte de la maldad de inotify y proporciona una API intuitiva para escuchar eventos específicos en un archivo.

EDITAR: Esto no debería ser usado para ver toneladas de archivos. En mi sistema, el máximo es 8192. Puede encontrar su máximo usando este comando cat /proc/sys/fs/inotify/max_user_watches . Esto podría usarse para ver los directorios en busca de cambios y luego averiguar los archivos individuales desde allí. Un evento modificado se activará si se modifica un archivo directamente debajo de ese directorio.

EDITAR: Gracias @guiomie por señalar que ver archivos ahora es totalmente compatible con Windows. Supongo que esto es con la versión v0.6.x.