Binary Coffee

Manipulación de archivos con Node.js

javascript nodejs
Tener en cuenta que en NodeJS para trabajar con archivos, existen dos maneras de hacerlo: - Sincrónicamente: - Asincrónicamente: A continuación muestro cómo puedes trabajar con ficheros de ambas maneras. En cada caso se hace referencia a la dependencia `fs` (File System) de NodeJS que se puede importar como se muestra en el ejemplo siguiente: ``` const fs = require('fs'); ``` ## Leer archivos ``` // leer fichero de manera sincrónica fs.readfile('path/to/the/file', (err, content) => { if (err) { console.error(err); } console.log(contect) }); // leer fichero de manera asincrónica const content = fs.readfileSync('path/to/the/file'); console.log(content); ``` En caso de ficheros muy grandes, claramente no podemos leer el fichero completo en memoria, y para esto se puede hacer uso de Stream. A continuación un ejemplo de cómo leer un fichero grande. ``` const stream = fs.createReadStream('./request.md'); stream.on('data', (chunk) => { console.log(chunk.toString()); }); stream.on('close', (data) => { console.log('no more data'); }); ``` En el caso anterior, se puede notar que el archivo se leerá por trozos en vez de completamente. Con esto se pueden leer archivos muy grandes que cargarlos en memoria pueda significar lentitud o demora. ## Crear/Editar archivos En el caso de crear/editar fichero, se utiliza la función de escribir. Esta función crea automáticamente el fichero si no existe o lo modifica en caso contrario. ``` // escribir en fichero de manera asincrónica fs.writeFile('./tmp.dat', 'information inside file', {}, () => { console.log('file saved'); }); // escribir en fichero de manera sincrónica fs.writeFileSync('./tmp2.dat', "information inside file 2"); ``` Al igual que para leer un archivo muy grande, se puede hacer una lectura por partes del mismo, a la hora de escribir existe la misma opción para escribir por partes. ``` // escribir en fichero por partes const streamWrite = fs.createWriteStream('./tmp3.dat'); streamWrite.write('line1\n'); streamWrite.write('line2\n'); streamWrite.write('line3\n'); streamWrite.end(); ``` ## Eliminar archivos ``` // eliminar fichero de manera asincrónica fs.unlink('./tmp.dat', (err) => { if (err) { console.error(err); } console.log('removed'); }); // eliminar fichero de manera sincrónica fs.unlinkSync('./tmp2.dat'); ``` > Happy coding!
Opiniones