Node.js para principiantes: los fundamentos de trabajar con archivos

Hoy hablaremos sobre cómo trabajar con el sistema de archivos usando Node.js, consideremos las operaciones básicas realizadas con archivos. Dichas operaciones incluyen lo siguiente:

  • Creación de archivos
  • Leer archivo
  • Escribir datos en un archivo
  • Eliminación de archivos
  • Renombrar archivo

La necesidad de realizar tales operaciones surge en una variedad de situaciones.



Módulo fs


Node.js tiene un módulo estándar, fs (abreviatura de Sistema de archivos), que proporciona a los desarrolladores herramientas para trabajar con el sistema de archivos. Puede importarlo al proyecto de la siguiente manera:

 var fs = require('fs'); 

Los métodos de este módulo se presentan en formas sincrónicas y asincrónicas. Las funciones de devolución de llamada que se pasan a los métodos asincrónicos aceptan un objeto de error como primer parámetro y los datos devueltos cuando la operación se realizó correctamente como segundo parámetro. Considere un ejemplo:

 function fileHandler(){   fs.readFile('textFile.txt', 'utf8', (err, data) => {       if(err) throw err;       console.log(data);   }); } 

El método .readFile() , del que hablaremos más, está destinado a leer archivos. En este ejemplo, la función de devolución de llamada tiene dos parámetros: err y data . Los errores que pueden ocurrir al intentar leer un archivo caen en el primer parámetro, los datos obtenidos después de una operación exitosa se encuentran en el segundo parámetro. Tenga en cuenta que .readFile() es un método asincrónico del módulo fs . Su versión sincrónica se llama .readFileSync() . Se usa un enfoque similar para nombrar otros métodos de módulo.

Crea un nuevo archivo


Comencemos con un ejemplo:

 function fileHandler(){   fs.open('testFile.txt', 'w', (err) => {       if(err) throw err;       console.log('File created');   });  } 

Aquí el método fs.open() se usa para crear un nuevo archivo. Toma un nombre de archivo como primer argumento. Su segundo argumento es una bandera que le dice al sistema exactamente lo que queremos hacer con el archivo. En este caso, esta es la bandera w (abreviatura de escritura), que indica que queremos abrir el archivo para escribir. El método .open() puede aceptar varias banderas. Aquí hay algunos de ellos:

  1. r : abrir archivo para leer
  2. r+ : archivo abierto para leer y escribir
  3. rs : archivo abierto para leer en modo síncrono
  4. w : abrir archivo para escribir
  5. a : abrir archivo para escribir datos al final del archivo
  6. a+ : abre el archivo para leer y escribir datos al final del archivo

Ahora, antes de pasar al siguiente ejemplo, editaremos el archivo testFile.txt recién creado utilizando algún tipo de editor de texto. Agregue el siguiente texto:

 This is a test file. We're learning about Node.js File System. The End. 

Escribir datos en un archivo


Hablemos sobre cómo agregar algo a un archivo:

 function fileHandler(){   fs.appendFile('testFile.txt', ' This line is beyond the end.', (err) => {       if(err) throw err;       console.log('Data has been added!');   }); } 

Aquí usamos el método .appendFile() para agregar datos al final de un archivo existente. Como primer argumento, este método acepta el nombre del archivo, como el segundo, los datos que deben agregarse al final del archivo. El tercer argumento es, como de costumbre, una función de devolución de llamada.

Después de que el código que se muestra arriba se ejecuta correctamente, el contenido del archivo se verá así:

 This is a test file. We're learning about Node.js File System. The End. This line is beyond the end. 

Hay otra forma de escribir datos en un archivo. Implica el uso del método .writeFile() . Este método es muy similar a .appendFile() , pero tiene una diferencia importante. El hecho es que usando el método .appendFile() , agregamos nuevos datos al archivo después de los datos que ya están en él. Y cuando se utiliza el método .writeFile() , el contenido del archivo se reemplaza por uno nuevo. Probemos este método:

 function fileHandler(){   fs.writeFile('testFile.txt', "I'm the replacement you've been looking for.", (err) => {       if(err) throw err;       console.log('Data has been replaced!');   }); } 

Después de una operación exitosa, el archivo contendrá el siguiente texto:

 I'm the replacement you've been looking for. 

Como puede ver, el contenido del archivo se reemplaza completamente por uno nuevo.

Leer archivo


Para leer archivos, el módulo fs proporciona el método .readFile() , un ejemplo del uso que ya hemos visto. Toma el nombre del archivo como primer parámetro y la codificación como el segundo. El tercer parámetro es la función de devolución de llamada. Intentemos imprimir el contenido del archivo testFile.txt en la consola usando este método:

 function fileHandler(){   fs.readFile('testFile.txt', 'utf8', (err, data) => {       if(err) throw err;       console.log('--------- [File Data] ---------');       console.log(data);       console.log('--------- [File Data] ---------');   }); } 

Eso es lo que tenemos.


Archivo de salida de datos a la consola

Ahora hablemos de renombrar archivos.

Renombrar archivo


Para renombrar archivos, use el método .rename() :

 function fileHandler(){   fs.rename('testFile.txt', 'newTestFile.txt', (err) => {       if(err) throw err;       console.log('File renamed successfully!');   }); } 

El primer argumento del método es el nombre de un archivo existente, el segundo es el nuevo nombre de este archivo. Después de una llamada exitosa a este método, el archivo testFile.txt convierte en newTestFile.txt .

Eliminación de archivos


Para eliminar archivos, use el método .unlink() :

 function fileHandler(){   fs.unlink('newTestFile.txt', (err) => {       if(err) throw err;       console.log('File deleted successfully!');   }); } 

Una llamada exitosa a este método elimina el archivo newTestFile.txt .

Resumen


En este artículo, examinamos los conceptos básicos del trabajo con el sistema de archivos en Node.js. Si desea dominar este tema más profundamente, eche un vistazo a este material del ciclo de publicación de Node.js, lea la documentación del módulo fs e intente probar todo lo que aprende en la práctica.

Estimados lectores! ¿Utiliza el módulo fs estándar o algo más para trabajar con archivos en Node.js?

Source: https://habr.com/ru/post/452566/


All Articles