Node proporciona diferentes opciones para escribir en archivos en su sistema a través del integrado fs módulo. Éstos incluyen escribirArchivo(), agregar archivo (), y crearEscribirStream().

Al igual que muchos idiomas, Node.js le permite elegir entre sobrescribir un archivo existente o agregarlo. También debe conocer las ventajas y desventajas de escribir un archivo de una sola vez y transmitirlo.

Usando escribir archivo ()

escribirArchivo() es quizás el método más fácil que puede usar para escribir un archivo en Node.

fs.writeFile (nombre de archivo, datos, devolución de llamada)

Aquí hay un ejemplo que muestra cómo crear un archivo de texto sin formato usando writeFile(). Por supuesto, puedes crear otros tipos de archivos como CSV o JSON.

constante f = requerir("fs")

fs.writeFile("test.txt", "Nuevo contenido", err => {
si (Error) {
consola.log (error)
}
});

writeFile() admite async/await do en lugar de usar devoluciones de llamada como en el ejemplo anterior, puede crear el archivo de la siguiente manera.

instagram viewer
constante f = requerir("fs").promesas

asíncronofunciónescribir en el archivo() {
probar {
esperar fs.writeFile("test.txt", "Nuevo cont")
} captura (Error) {
consola.log (error);
}
}

escribir en el archivo ()

De forma predeterminada, writeFile() funciona reemplazando el contenido del archivo especificado con contenido nuevo si el archivo existe. Sin embargo, hay banderas que puede usar para anular esta funcionalidad, como:

  • r+ - abre el archivo para leer y escribir.
  • w+ - abre el archivo para leer y escribir al principio del archivo
  • a - abre el archivo para escribir al final del archivo.
  • un+ - abre el archivo para leer y escribir al final del archivo.

Por ejemplo, puede usar la bandera a+ de esta manera:

constante f = requerir("fs")

fs.writeFile("test.txt", "Contenido más reciente", { bandera: "a+" }, error => {
si (Error) {
consola.log (error)
}
});

Hay muchos otros indicadores del sistema de archivos sobre los que puede aprender en el Documentación de nodo para el módulo fs.

los fs módulo también proporciona escribirFileSync, la versión síncrona de escribirArchivo().

constante f = requerir("fs")

fs.writeFileSync("test.txt", "Contenido más reciente", { bandera: "a+" }, error => {
si (Error) {
consola.log (error)
}
});

Usando createWriteStream()

La desventaja de usar escribirArchivo() es que debe almacenar todo el contenido del archivo a la vez, lo que no es escalable para archivos grandes. crearEscribirStream() sin embargo, admite la escritura secuencial. Esto significa que puede escribir un fragmento de datos en un archivo a la vez. Este es el sistema general para crear un flujo grabable.

fs.createWriteStream (ruta, opciones)

El siguiente código escribe datos en un archivo de texto usando flujos

constante f = requerir("fs")

// crear un flujo de escritura
dejar writeableStream = fs.createWriteStream("test.txt")

// Escribir en el archivo usando el flujo de escritura
writeableStream.write("Nuevo contenido");

Aquí hay otro ejemplo que muestra cómo puede canalizar datos a la secuencia de escritura. Este programa escribe toda la entrada de la terminal en el archivo test.txt siempre que la terminal esté abierta.

constante f = requerir("fs")
dejar WritableStream = fs.createWriteStream("test.txt");
proceso.stdin.pipe (writableStream);

Si ejecuta este programa desde la línea de comandos, puede salir con Ctrl + re o Ctrl + c.

También puede escribir desde otro archivo en el flujo de escritura. Considere el siguiente ejemplo:

constante f = requerir("fs")
dejar readableStream = fs.createReadStream("test.txt");
dejar WritableStream = fs.createWriteStream("test2.txt");

readableStream.on("datos", función(pedazo) {
writeableStream.write (fragmento);
});

La creación de un flujo legible del archivo que desea copiar le permite leer su contenido en fragmentos. Entonces, por cada fragmento recibido, el programa escribirá en el archivo de destino.

Usando appendFile()

agregar archivo () es un método directo de agregar contenido al final del archivo. Aquí hay un ejemplo.

constante f = requerir("fs")

fs.appendFile("prueba.txt", "contenido agregado", err => {
si (Error) {
consola.error (error);
}
});

También puede usar async/await.

constante f = requerir("fs").promesas

asíncronofunciónanexar al archivo() {
probar {
esperar fs.appendFile("test.txt", "contenido añadido")
} captura (Error) {
consola.log (error);
}
}

agregar al archivo ()

Me gusta escribirArchivo(), appendFile también tiene una versión síncrona:

fs.appendFileSync("test.txt", "contenido agregado");

Use secuencias para escribir archivos grandes

Este artículo discutió varios enfoques para escribir archivos en Node. Si bien writeFile() es muy sencillo, es más adecuado para tamaños de archivo pequeños, ya que no permite escrituras secuenciales. Si se trata de archivos de gran tamaño, es mejor utilizar flujos de escritura.