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