Synchronous File IO in Node. js Publicado por Dave Eddy el 26 Mar 2013 - tags: tech ¿Llamar a fs. writeFileSync disparar una escritura sincrónica en el sistema de archivos Si está familiarizado con Node. js. O al menos han oído hablar de él, lo más probable es que haya oído que utiliza IO no bloqueante, y le permite trabajar asíncronamente. Una de las API más básicas que Node proporciona es para el sistema de archivos Con esta API, puede leer, escribir, eliminar archivos, etc. y hacer otras tareas y modificaciones relacionadas con el sistema de archivos. Esta API sigue un patrón estándar de exponer 2 funciones para cada operación: una para trabajo asíncrono y otra para trabajo síncrono. Por ejemplo, si desea leer un archivo en Node, puede hacerlo asincrónicamente: Node continuará ejecutando cualquier código javascript que encuentre mientras lee el archivo. Una vez que todo el javascript se hace ejecutándose y el archivo está listo, ejecutará la función anónima e imprimirá el contenido del archivo. Puede realizar la misma tarea de forma sincrónica: En este ejemplo, el contenido se establecerá en el contenido del archivo y no se ejecutará ningún código javascript mientras se está leyendo el archivo. El primer enfoque se realiza asincrónicamente y volverá inmediatamente para no bloquear el código de ejecución. La segunda se realiza de forma síncrona y detendrá la ejecución hasta que la tarea se haya completado. Los mismos 2 tipos de funciones existen para escribir, renombrar, borrar, etc. Synchronous Writes Por lo tanto, la pregunta es si la llamada fs. writeFileSync en realidad desencadena una escritura síncrona en el sistema de archivos En el proceso del nodo userland, es síncrona en el sentido de que se detiene la ejecución de cualquier javascript, pero qué pasa en el Kernel Una escritura asíncrona es Una cosa muy diferente de una escritura síncrona a un sistema de archivos. Para el resto de este blog, hablaré dentro del contexto del kernel de Illumos y del sistema de archivos ZFS. Hay un par de maneras de responder a esta pregunta. La forma más obvia es extraer el código fuente Node. js, encontrar las funciones que hablan con el sistema de archivos que fs. js usa y ver cómo se llaman. No he hecho mucho trabajo en el nodo núcleo, y sé que podría (y lo más probable es que) tomar mucho tiempo para encontrar el código que estaba buscando. En su lugar, sólo utilizo DTrace para responder a la pregunta y ver exactamente lo que está haciendo Node. DTrace al Rescue Escribí un par de programas de prueba que ejercen estas funciones del sistema de archivos. Usando DTrace, podremos ver con qué banderas se abre un archivo, lo que mostrará si las operaciones son sincrónicas o no. Fs. writeFile () Este script ejercita el mecanismo asincrónico de escritura de archivos de Node. Utilizando DTrace, podemos imprimir los indicadores que se pasaron a open (2) para ese archivo específico. Luego, usando fileflags. Podemos convertir ese decimal en los nombres simbólicos que componen el decimal (véase open (2) para más información). El primer comando le indica a DTrace que ejecute el nodo writefile. js. Y busque cualquiera de la familia abierta de syscalls. Si el primer argumento para abrir (el nombre de ruta) coincide con el archivo al que estamos escribiendo, imprima el comando syscall exacto disparado y los indicadores decimales. Resulta que open64 (2) fue llamado para nuestro archivo, dadas las siguientes opciones. OWRONLY. Abierto sólo escritura OCREAT. Crear el archivo si no existe OTRUNC. Truncar el archivo Opciones bastante estándar para abrir un archivo. Dado que ninguna de las opciones son para IO síncrono (OSYNC, ODSYNC, etc.), esta escritura de archivo es asíncrona a ZFS y la llamada a write (2) regresa antes de que los datos estén garantizados en un almacenamiento estable. Node39s asíncrono fs. writeFile efectivamente hace una escritura asíncrona al sistema de archivos. Fs. writeFileSync () Entonces, ¿qué pasa con Node39s mecanismo de escritura de archivos síncrono, es una escritura síncrona real para el sistema de archivos Este script bloqueará el bucle de eventos mientras que los datos se escriben en el archivo (o por lo que pensamos), ya que utiliza Node39s Mecanismo de escritura de archivos sincrónicos. Los mismos comandos que los anteriores, y la misma salida. Node39s fs. writeFileSync NO inicia una escritura síncrona en el sistema de archivos. Desde la perspectiva de un programa Node, sabemos lo mismo cuando una llamada a fs. writeFileSync devuelve, como sabemos cuando se cancela la devolución de llamada a fs. writeFile. Sabemos que la llamada subyacente, write (2) ha regresado No sabemos que los datos lo han hecho a un almacenamiento estable. La única diferencia entonces, es que una función bloquea el bucle de eventos de Node39s, mientras que la otra le permite continuar procesando eventos. Fs. createWriteStream () Otro mecanismo que permite el archivo IO es crear y escribir en un Node WritableStream. La misma salida que la anterior, de nuevo. Este mecanismo abre el archivo con los mismos indicadores que fs. writeFile y fs. writeFileSync. Fs. appendFile () Por lo tanto, la escritura en un archivo utiliza los mismos indicadores para abrir el archivo, ¿qué pasa con el mismo taladro como anteriormente? Por lo tanto, las banderas son diferentes, eso es una buena señal. OTRUNC se ha intercambiado para OAPPEND. Ya que ya no estamos truncando el archivo a 0 bytes y en su lugar estamos añadiendo a él. Una vez más, como todos los comandos anteriores, fs. appendFile abre el archivo para IO asíncrono. Fs. appendFileSync () Por último pero no menos let39s probar la versión sincrónica de appendFile. Igual que fs. appendFile el archivo NO está abierto para escrituras síncronas. Banderas comunes Utilizamos un simple programa C para abrir un archivo usando fopen (3C) para ver qué banderas utiliza. A continuación, ejecútelo con el mismo comando que el anterior para ver con qué banderas se abrió el archivo. Efectivamente, las mismas banderas que abrir un archivo para escribir en tierra Node. Resultados fs. writeFileSync es síncrono en el sentido de que bloquea el bucle de eventos mientras se ejecuta. No pide al Kernel que realice una escritura síncrona en el sistema de archivos subyacente. Este script bloqueará el bucle de eventos mientras los datos se escriben en el archivo (o así creemos). Ninguna de las funciones anteriores abre archivos para IO síncrono. Debido a esto, todo lo que sabemos es que la llamada a write (2) devuelve, no que los datos han sido escritos en el sistema de archivos y descargados a un almacenamiento estable. Don39t se disparó en los nombres, fs. writeSync doesn39t de forma sincrónica escribir en el sistema de archivos. Si desea abrir un archivo para E / S síncrono, deberá usar las funciones fs de nivel inferior que Node ofrece, como fs. open () y fs. fsync (). Copiar dave eddy ltdavedaveeddygtActualmente, DenysVitali, el problema es que jane no debería ser capaz de escribir ningún archivo en 47home47. Generalmente ese directorio es 755 root: wheel (o lo que sea). Si el nodo quiere escribir un archivo como jane, va a ser más fácil escribir en 47home47jane47test. txt. Cambiar de casa a algo más permisivo que 755 es un gran error. Ndash Jane Avriette Jan 26 14 at 23:05 Debe esperar a la devolución de llamada para asegurarse de que el búfer se escribe en disco. Su no almacenado en búfer. Todos los datos deben almacenarse al mismo tiempo que no se pueden realizar escrituras secuenciales. Crea un WriteStream. Que es conveniente porque usted no necesita esperar una devolución de llamada. Pero otra vez, su no almacenado. Un WriteStream. Como dice el nombre, es una corriente. Un flujo por definición es un búfer que contiene datos que se mueven en una dirección (destino de origen). Pero un flujo de escritura no está necesariamente almacenado en búfer. Un flujo se almacena en búfer cuando escribe n veces y en el momento n1. El flujo envía el búfer al kernel (porque está lleno y necesita ser descargado). En otras palabras: Un buffer es el objeto. El hecho de que esté o no almacenado en búfer es una propiedad de ese objeto. Si miras el código, el WriteStream hereda de un objeto Stream grabable. Si prestas atención, verás cómo limpian el contenido que no tienen ningún sistema de almacenamiento en búfer. Si escribe una cadena, se convierte en un búfer y luego se envía a la capa nativa y se escribe en el disco. Al escribir cadenas, theyre no llenar cualquier búfer. Por lo tanto, si lo hace: Esa es tres llamadas a la capa de E / S. Aunque está utilizando buffers, los datos no se almacenan en búfer. Un flujo almacenado en búfer haría: fs. write (nuevo Buffer (abc)). Una llamada a la capa de E / S. A partir de ahora, en Node. js v0.12 (versión estable anunciada 02/06/2017) ahora soporta dos funciones: corcho () y uncork (). Parece que estas funciones finalmente le permitirán almacenar / limpiar las llamadas de escritura. Por ejemplo, en Java hay algunas clases que proporcionan flujos almacenados en búfer (BufferedOutputStream. BufferedWriter.). Si escribe tres bytes, estos bytes se almacenarán en el búfer (memoria) en lugar de realizar una llamada de E / S sólo por tres bytes. Cuando el búfer está lleno, el contenido se descarga y se guarda en el disco. Esto mejora el rendimiento. No estoy descubriendo nada, sólo recuerdo cómo se debe hacer un acceso a disco. Node. js v7.2.0 Índice Contenido File System File I / O es proporcionado por envolturas simples alrededor de las funciones estándar de POSIX. Para utilizar este módulo se requiere (39fs39). Todos los métodos tienen formas asíncronas y sincrónicas. El formulario asíncrono siempre toma una devolución de llamada de finalización como su último argumento. Los argumentos pasados a la devolución de llamada de finalización dependen del método, pero el primer argumento siempre está reservado para una excepción. Si la operación se completó correctamente, el primer argumento será nulo o no definido. Cuando se utiliza el formulario sincrónico cualquier excepción se lanzan de inmediato. Puede utilizar try / catch para manejar excepciones o permitir que se expandan. Aquí está un ejemplo de la versión asíncrona: Aquí está la versión síncrona: Con los métodos asíncronos no hay orden garantizado. Así que lo siguiente es propenso a error: Podría ser que fs. stat se ejecuta antes de fs. rename. La forma correcta de hacerlo es encadenar las devoluciones de llamada. En los procesos ocupados, se recomienda encarecidamente al programador que utilice las versiones asíncronas de estas llamadas. Las versiones síncronas bloquearán todo el proceso hasta que finalicen, deteniendo todas las conexiones. Se puede usar la ruta relativa a un nombre de archivo. Recuerde, sin embargo, que esta ruta será relativa a process. cwd (). La mayoría de las funciones fs le permiten omitir el argumento de devolución de llamada. Si lo hace, se utiliza una devolución de llamada predeterminada que vuelve a generar errores. Para obtener una traza en el sitio de llamada original, establezca la variable de entorno NODEDEBUG: Las funciones fs de la API de memoria intermedia admiten rutas de paso y recepción como cadenas y búferes. Este último tiene la intención de hacer posible trabajar con sistemas de archivos que permiten nombres de archivos que no sean de UTF-8. Para la mayoría de los usos típicos, trabajar con caminos como Buffers será innecesario, ya que la cadena de API se convierte automáticamente en y desde UTF-8. Tenga en cuenta que en ciertos sistemas de archivos (como NTFS y HFS) los nombres de archivo siempre se codificarán como UTF-8. En estos sistemas de archivos, el paso de Buffers no codificados en UTF-8 a funciones fs no funcionará como se esperaba. Clase: fs. FSWatcher Los objetos devueltos de fs. watch () son de este tipo. La devolución de llamada del oyente proporcionada a fs. watch () recibe los eventos de cambio de FSWatcher39 devueltos. El objeto en sí emite estos eventos: Event: 39change39 Se emite cuando algo cambia en un directorio o archivo visto. Vea más detalles en fs. watch (). El argumento filename no puede proporcionarse dependiendo del soporte del sistema operativo. Si se proporciona nombre de archivo, se proporcionará como un búfer si fs. watch () se llama con su opción de codificación establecida en 39buffer39. De lo contrario filename será una cadena. Evento: 39error39 Se emite cuando se produce un error. Watcher. close () Se emite cuando se ha cerrado el descriptor de archivo subyacente de WriteStream 39s mediante el método fs. close (). WriteStream. bytesWritten El número de bytes escritos hasta ahora. No incluye datos que todavía están en cola para escribir. WriteStream. path La ruta de acceso al archivo al cual el flujo está escribiendo, como se especifica en el primer argumento a fs. createWriteStream (). Si ruta se pasa como una cadena, writeStream. path será una cadena. Si la ruta se pasa como un Buffer. Entonces writeStream. path será un Buffer. Fs. access (path, mode, callback) Añadido en: v0.11.15 Prueba los permisos de un usuario para el archivo o directorio especificado por path. El argumento mode es un entero opcional que especifica las comprobaciones de accesibilidad a realizar. Las siguientes constantes definen los posibles valores de modo. Es posible crear una máscara que consiste en el OR bit a bit de dos o más valores. Fs. constants. FOK - path es visible para el proceso que llama. Esto es útil para determinar si existe un archivo, pero no dice nada acerca de los permisos de rwx. Por defecto si no se especifica ningún modo. Fs. constants. ROK - path puede ser leído por el proceso de llamada. Fs. constants. WOK - path puede ser escrito por el proceso llamante. Fs. constants. XOK - path puede ser ejecutado por el proceso llamante. Esto no tiene ningún efecto en Windows (se comportará como fs. constants. FOK). El argumento final, callback. Es una función de devolución de llamada que se invoca con un argumento de error posible. Si alguna de las comprobaciones de accesibilidad falla, el argumento de error se rellenará. El siguiente ejemplo comprueba si el archivo / etc / passwd puede ser leído y escrito por el proceso actual. Utilizando fs. access () para comprobar la accesibilidad de un archivo antes de llamar a fs. open (). Fs. readFile () o fs. writeFile () no se recomienda. Hacer esto introduce una condición de carrera, ya que otros procesos pueden cambiar el estado del archivo entre las dos llamadas. En su lugar, el código de usuario debe abrir / leer / escribir el archivo directamente y manejar el error planteado si el archivo no es accesible. Write (NOT RECOMMENDED) read (NOT RECOMMENDED) Los ejemplos de quotnot recommendedquot anteriores verifican la accesibilidad y luego usan el archivo los ejemplos quotrecommendedquot son mejores porque usan el archivo directamente y manejan el error, si lo hay. En general, compruebe la accesibilidad de un archivo sólo si el archivo no se utiliza directamente, por ejemplo, cuando su accesibilidad es una señal de otro proceso. Fs. accessSync (path, mode) Añadido en: v0.11.15 Versión sincrónica de fs. access (). Esto lanza si cualquier comprobación de accesibilidad falla, y no hace nada de lo contrario. Fs. appendFile (archivo, datos, opciones, devolución de llamada) Asíncrona anexar datos a un archivo, creando el archivo si aún no existe. Los datos pueden ser una cadena o un búfer. Si options es una cadena, entonces especifica la codificación. Ejemplo: Se debe haber abierto un descriptor de archivo especificado para añadirlo. Nota: Si se especifica un descriptor de archivo como el archivo. No se cerrará automáticamente. Fs. appendFileSync (archivo, datos, opciones) La versión sincrónica de fs. appendFile (). Devuelve indefinido. Fs. chmod (ruta, modo, devolución de llamada) Asincrónico chmod (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. chmodSync (ruta, modo) Chmod síncrono (2). Devuelve indefinido. Fs. chown (path, uid, gid, callback) Chunk asincrónico (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. chownSync (ruta, uid, gid) Chock síncrono (2). Devuelve indefinido. Fs. close (fd, devolución de llamada) Asynchronous close (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. closeSync (fd) Cierre síncrono (2). Devuelve indefinido. Fs. constents Devuelve un objeto que contiene constantes de uso común para las operaciones del sistema de archivos. Las constantes específicas actualmente definidas se describen en Constantes FS. Fs. createReadStream (ruta, opciones) Tenga en cuenta que, a diferencia del valor predeterminado establecido para highWaterMark en un flujo legible (16 kb), el flujo devuelto por este método tiene un valor predeterminado de 64 kb para el mismo parámetro. Opciones es un objeto o una cadena con los siguientes valores predeterminados: las opciones pueden incluir valores de inicio y fin para leer un intervalo de bytes del archivo en lugar de todo el archivo. Tanto el inicio como el final son inclusivos y comienzan en 0. La codificación puede ser cualquiera de las aceptadas por Buffer. Si se especifica fd, ReadStream ignorará el argumento path y utilizará el descriptor de archivo especificado. Esto significa que no se emitirá ningún evento 39open39. Tenga en cuenta que fd debe estar bloqueando no bloqueador fd s debe pasar a net. Socket. Si autoClose es falso, entonces el descriptor de archivo no se cerrará, incluso si hay un error. Es su responsabilidad cerrarlo y asegurarse de que no hay fugas de descriptor de archivo. Si autoClose se establece en true (comportamiento predeterminado), en error o final, el descriptor de archivo se cerrará automáticamente. Mode establece el modo de archivo (permiso y bits pegajosos), pero sólo si se creó el archivo. Un ejemplo para leer los últimos 10 bytes de un archivo de 100 bytes de largo: Si options es una cadena, entonces especifica la codificación. Las opciones de fs. createWriteStream (ruta de acceso, opciones) son un objeto o una cadena con los siguientes valores predeterminados: las opciones también pueden incluir una opción de inicio para permitir escribir datos en alguna posición más allá del comienzo del archivo. Modificar un archivo en lugar de reemplazarlo puede requerir un modo flags de r en lugar del modo predeterminado w. El defaultEncoding puede ser cualquiera de los aceptados por Buffer. Si autoClose se establece en true (comportamiento predeterminado) en error o fin, el descriptor de archivo se cerrará automáticamente. Si autoClose es falso, entonces el descriptor de archivo no se cerrará, incluso si hay un error. Es su responsabilidad cerrarlo y asegurarse de que no hay fugas de descriptor de archivo. Como ReadStream. Si se especifica fd, WriteStream ignorará el argumento path y utilizará el descriptor de archivo especificado. Esto significa que no se emitirá ningún evento 39open39. Tenga en cuenta que fd debe estar bloqueando no bloqueador fd s debe pasar a net. Socket. Si options es una cadena, entonces especifica la codificación. Fs. exists (path, callback) Agregado en: v0.0.2 Deprecated since: v1.0.0 Pruebe si existe o no la ruta de acceso dada comprobando con el sistema de archivos. A continuación, llame al argumento de devolución de llamada con true o false. Ejemplo: Tenga en cuenta que el parámetro de esta devolución de llamada no es coherente con otras devoluciones de llamada de Node. js. Normalmente, el primer parámetro de una devolución de llamada Node. js es un parámetro err, seguido opcionalmente por otros parámetros. La devolución de llamada fs. exists () sólo tiene un parámetro booleano. Esta es una de las razones por las que se recomienda fs. access () en lugar de fs. exists (). Utilizando fs. exists () para comprobar la existencia de un archivo antes de llamar a fs. open (). Fs. readFile () o fs. writeFile () no se recomienda. Hacer esto introduce una condición de carrera, ya que otros procesos pueden cambiar el estado del archivo entre las dos llamadas. En su lugar, el código de usuario debe abrir / leer / escribir el archivo directamente y manejar el error generado si el archivo no existe. Escriba (NO RECOMENDADO) lea (NO RECOMENDADO) El quotnot recommendedquot ejemplos anteriores comprobar la existencia y luego utilizar el archivo los ejemplos quotrecommendedquot son mejores porque utilizan el archivo directamente y manejar el error, si lo hay. En general, comprobar la existencia de un archivo sólo si el archivo no será utilizado directamente, por ejemplo, cuando su existencia es una señal de otro proceso. Fs. existsSync (ruta) Versión sincrónica de fs. exists (). Devuelve true si el archivo existe, false en caso contrario. Tenga en cuenta que fs. exists () está obsoleto, pero fs. existsSync () no lo es. (El parámetro de devolución de llamada a fs. exists () acepta parámetros que son inconsistentes con otras devoluciones de llamada de Node. js. Fs. existsSync () no utiliza una devolución de llamada.) Fs. fchmod (fd, mode, callback) Asincrónico fchmod (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. fchmodSync (fd, modo) Sincronizado fchmod (2). Devuelve indefinido. Fs. fchown (fd, uid, gid, callback) Ficha asincrónica (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. fchownSync (fd, uid, gid) Ficha síncrona (2). Devuelve indefinido. Fs. fdatasync (fd, callback) Asíncrono fdatasync (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. fdatasyncSync (fd) Synchronous fdatasync (2). Devuelve indefinido. Fs. fstat (fd, callback) Fstat asincrónico (2). La devolución de llamada obtiene dos argumentos (err, stats) donde stats es un objeto fs. Stats. Fstat () es idéntico a stat (). Excepto que el archivo que se va a especificar está especificado por el descriptor de archivo fd. Fs. fstatSync (fd) Fstat síncrono (2). Devuelve una instancia de fs. Stats. Fs. fsync (fd, callback) Asíncrono fsync (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. fsyncSync (fd) Sincronización fsync (2). Devuelve indefinido. Fs. ftruncate (fd, len, callback) Asincrónico ftruncate (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Si el archivo referido por el descriptor de archivo es mayor que len bytes, sólo los primeros bytes de len se mantendrán en el archivo. Por ejemplo, el programa siguiente conserva sólo los primeros cuatro bytes del archivo Si el archivo anterior era más corto que len bytes, se amplía y la parte extendida se rellena con bytes nulos (39039). Por ejemplo, Los últimos tres bytes son bytes nulos (39039), para compensar el sobre-truncamiento. Fs. ftruncateSync (fd, len) Sincronizado ftruncate (2). Devuelve indefinido. Fs. futimes (fd, atime, mtime, callback) Cambia las marcas de tiempo del archivo de un archivo al que hace referencia el descriptor de archivo suministrado. Fs. futimesSync (fd, atime, mtime) Versión sincrónica de fs. futimes (). Devuelve indefinido. Fs. lchmod (ruta, modo, devolución de llamada) Descontinuado desde: v0.4.7 Asincrónico lchmod (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Sólo disponible en Mac OS X. fs. lchmodSync (ruta, modo) Descontinuado desde: v0.4.7 Sincronizado lchmod (2). Devuelve indefinido. Fs. lchown (path, uid, gid, callback) Descontinuado desde: v0.4.7 Latch asincrónico (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. lchownSync (path, uid, gid) Descontinuado desde: v0.4.7 LCHST síncrono (2). Devuelve indefinido. Fs. link (existingPath, newPath, callback) Enlace asíncrono (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. linkSync (existingPath, newPath) Enlace síncrono (2). Devuelve indefinido. Fs. lstat (ruta de acceso, devolución de llamada) Asincrónico lstat (2). La devolución de llamada obtiene dos argumentos (err, stats) donde stats es un objeto fs. Stats. Lstat () es idéntico a stat (). Excepto que si path es un enlace simbólico, entonces el enlace mismo es stat-ed, no el archivo al que se refiere. Fs. lstatSync (path) Lstat síncrono (2). Devuelve una instancia de fs. Stats. Fs. mkdir (ruta, modo, devolución de llamada) Asíncrono mkdir (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. El modo predeterminado es 0o777. Fs. mkdirSync (ruta, modo) Mkdir síncrono (2). Devuelve indefinido. Fs. mkdtemp (prefijo, opciones, devolución de llamada) Crea un directorio temporal único. Genera seis caracteres aleatorios que se añaden detrás de un prefijo necesario para crear un directorio temporal único. La ruta de carpeta creada se pasa como una cadena al segundo parámetro de callback39s. El argumento options opcional puede ser una cadena especificando una codificación, o un objeto con una propiedad de codificación que especifica la codificación de caracteres a usar. Nota . El método fs. mkdtemp () agregará los seis caracteres seleccionados al azar directamente a la cadena de prefijo. Por ejemplo, dado un directorio / tmp. Si la intención es crear un directorio temporal dentro de / tmp. El prefijo debe terminar con un separador de trayectoria específico de plataforma (require (39path39).sep). Fs. mkdtempSync (prefix, options) La versión sincrónica de fs. mkdtemp (). Devuelve la ruta de la carpeta creada. El argumento opciones opcionales puede ser una cadena especificando una codificación, o un objeto con una propiedad de codificación que especifica la codificación de caracteres a usar. Fs. open (path, flags, mode, callback) Archivo asíncrono abierto. Ver abierto (2). Las banderas pueden ser: 39r39 - Abra el archivo para leer. Se produce una excepción si el archivo no existe. 39r39 - Abrir el archivo para leer y escribir. Se produce una excepción si el archivo no existe. 39rs39 - Abrir archivo para lectura y escritura en modo síncrono. Indica al sistema operativo que omita la caché del sistema de archivos local. Esto es principalmente útil para abrir archivos en montajes NFS, ya que le permite omitir la caché local potencialmente obsoleta. Tiene un impacto muy real en el rendimiento de E / S para que no use esta bandera a menos que lo necesite. Tenga en cuenta que esto no convierte fs. open () en una llamada de bloqueo síncrono. Si eso es lo que quieres entonces debes usar fs. openSync () 39w39 - Abrir el archivo para escribir. El archivo se crea (si no existe) o se trunca (si existe). 39wx39 - Al igual que 39w39 pero falla si existe ruta. 39w39 - Abrir archivo para lectura y escritura. El archivo se crea (si no existe) o se trunca (si existe). 39wx39 - Al igual que 39w39 pero falla si existe ruta. 39a39 - Abrir el archivo para añadir. El archivo se crea si no existe. 39ax39 - Como 39a39 pero falla si existe ruta. 39a39 - Abrir el archivo para leer y agregar. El archivo se crea si no existe. 39ax39 - Como 39a39 pero falla si existe ruta. Mode establece el modo de archivo (permiso y bits pegajosos), pero sólo si se creó el archivo. Por defecto es 0666. legible y escribible. La devolución de llamada obtiene dos argumentos (err, fd). La bandera exclusiva 39x39 (indicador OEXCL en abierto (2)) asegura que la ruta se cree de nuevo. En los sistemas POSIX, se considera que la ruta existe aunque sea un enlace simbólico a un archivo inexistente. La bandera exclusiva puede o no funcionar con los sistemas de archivos de red. Las banderas también pueden ser un número según lo documentado por open (2) las constantes de uso común están disponibles en fs. constants. En Windows, los indicadores se traducen a sus equivalentes cuando sea aplicable, p. OWRONLY a FILEGENERICWRITE. O OEXCLOCREAT a CREATENEW. Como aceptado por CreateFileW. En Linux, las escrituras posicional no funcionan cuando el archivo se abre en el modo de agregación. El kernel ignora el argumento de posición y siempre anexa los datos al final del archivo. Nota: El comportamiento de fs. open () es específico de la plataforma para algunos indicadores. Como tal, abrir un directorio en OS X y Linux con el indicador 39a39 (ver ejemplo a continuación) devolverá un error. En contraste, en Windows y FreeBSD, se devolverá un descriptor de archivo. Fs. openSync (path, flags, mode) Versión sincrónica de fs. open (). Devuelve un entero que representa el descriptor de archivo. Fs. read (fd, buffer, offset, length, position, callback) Lea los datos del archivo especificado por fd. Buffer es el búfer en el que se escribirán los datos. Offset es el desplazamiento en el buffer para comenzar a escribir en. Length es un número entero que especifica el número de bytes a leer. Position es un entero que especifica por dónde empezar a leer en el archivo. Si la posición es nula. Los datos se leerán desde la posición actual del archivo. La devolución de llamada se da los tres argumentos, (err, bytesRead, buffer). Fs. readdir (ruta de acceso, opciones, devolución de llamada) Readdir asíncrono (3). Lee el contenido de un directorio. La devolución de llamada obtiene dos argumentos (err, files) donde files es una matriz de los nombres de los archivos en el directorio, excluyendo 39.39 y 39..39. El argumento opciones opcionales puede ser una cadena que especifica una codificación o un objeto con una propiedad de codificación que especifica la codificación de caracteres a utilizar para los nombres de archivo pasados a la devolución de llamada. Si la codificación se establece en 39buffer39. Los nombres de archivo devueltos se pasarán como objetos Buffer. Fs. readdirSync (ruta de acceso, opciones) Readdir síncrono (3). Devuelve una matriz de nombres de archivo que excluye 39.39 y 39..39. El argumento opciones opcionales puede ser una cadena que especifica una codificación o un objeto con una propiedad de codificación que especifica la codificación de caracteres a utilizar para los nombres de archivo pasados a la devolución de llamada. Si la codificación se establece en 39buffer39. Los nombres de archivo devueltos se pasarán como objetos Buffer. Fs. readFile (archivo, opciones, devolución de llamada) Asincrónicamente lee todo el contenido de un archivo. Ejemplo: La devolución de llamada se pasa dos argumentos (err, datos). Donde los datos son los contenidos del archivo. Si no se especifica ninguna codificación, se devuelve el búfer sin formato. Si options es una cadena, entonces especifica la codificación. Ejemplo: Cualquier descriptor de archivo especificado debe admitir la lectura. Nota: Si se especifica un descriptor de archivo como el archivo. No se cerrará automáticamente. Fs. readFileSync (archivo, opciones) Versión sincrónica de fs. readFile. Devuelve el contenido del archivo. Si se especifica la opción de codificación, esta función devuelve una cadena. De lo contrario, devuelve un búfer. Fs. readlink (ruta de acceso, opciones, devolución de llamada) Readlink asíncrono (2). La devolución de llamada obtiene dos argumentos (err, linkString). El argumento opciones opcionales puede ser una cadena que especifica una codificación o un objeto con una propiedad de codificación que especifica la codificación de caracteres a utilizar para la ruta de enlace pasada a la devolución de llamada. Si la codificación se establece en 39buffer39. La ruta de enlace devuelta se pasará como un objeto Buffer. Fs. readlinkSync (ruta de acceso, opciones) Synchronous readlink (2). Devuelve el valor de cadena del vínculo simbólico. El argumento opciones opcionales puede ser una cadena que especifica una codificación o un objeto con una propiedad de codificación que especifica la codificación de caracteres a utilizar para la ruta de enlace pasada a la devolución de llamada. Si la codificación se establece en 39buffer39. La ruta de enlace devuelta se pasará como un objeto Buffer. Fs. readSync (fd, buffer, offset, longitud, posición) Versión sincrónica de fs. read (). Devuelve el número de bytesRead. Fs. realpath (ruta, opciones, devolución de llamada) Asincrónico realpath (3). La devolución de llamada obtiene dos argumentos (err, resolvedPath). Puede utilizar process. cwd para resolver las rutas relativas. Sólo se admiten las rutas que se pueden convertir en cadenas UTF8. El argumento options opcional puede ser una cadena especificando una codificación, o un objeto con una propiedad de codificación especificando la codificación de caracteres a utilizar para la ruta pasada a la devolución de llamada. Si la codificación se establece en 39buffer39. La ruta devuelta se pasará como un objeto Buffer. Fs. realpathSync (ruta, opciones) Realpath síncrono (3). Devuelve la ruta resuelta. Sólo se admiten las rutas que se pueden convertir en cadenas UTF8. El argumento opciones opcionales puede ser una cadena que especifica una codificación o un objeto con una propiedad de codificación que especifica la codificación de caracteres a utilizar para el valor devuelto. Si la codificación se establece en 39buffer39. La ruta devuelta se pasará como un objeto Buffer. Fs. rename (oldPath, newPath, callback) Asincrónico rename (2). No se da ningún argumento que no sea una posible excepción a la devolución de llamada de finalización. Fs. renameSync (oldPath, newPath) Renombrar síncrono (2). Devuelve indefinido.
No comments:
Post a Comment