"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Sistema de archivos: Módulo Node.js `fs`

Sistema de archivos: Módulo Node.js `fs`

Publicado el 2024-08-29
Navegar:374

File System: Node.js `fs` Module

El módulo fs (Sistema de archivos) en Node.js es una herramienta poderosa para trabajar con el sistema de archivos, lo que le permite interactuar con archivos y directorios en su servidor. Está integrado en Node.js, por lo que no necesitas instalar nada adicional para usarlo. Exploremos cómo funciona fs y sus funciones clave.

1. ¿Qué es el módulo fs?

El módulo fs proporciona una API para interactuar con el sistema de archivos de una manera estrechamente modelada en torno a las funciones POSIX estándar. Este módulo se utiliza para tareas como leer y escribir archivos, crear directorios y más.

2. Configuración básica

Para usar el módulo fs, debes solicitarlo al comienzo de tu script Node.js:

const fs = require('fs');

3. Leer archivos

Hay dos formas principales de leer archivos: de forma asincrónica y sincrónica.

Lectura asincrónica

Este método no bloquea, lo que significa que no detendrá la ejecución de su programa mientras lee el archivo.

fs.readFile('example.txt', 'utf8', (err, data) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(data);
});
  • 'ejemplo.txt': el archivo que deseas leer.
  • 'utf8': Especifica la codificación que se utilizará.
  • Función de devolución de llamada: maneja el error y los datos del archivo.

Lectura sincrónica

Este método es de bloqueo, lo que significa que detendrá la ejecución de su programa hasta que se lea el archivo.

try {
    const data = fs.readFileSync('example.txt', 'utf8');
    console.log(data);
} catch (err) {
    console.error(err);
}

4. Escribir archivos

Al igual que leer archivos, la escritura también se puede realizar de forma asincrónica o sincrónica.

Escritura asincrónica

fs.writeFile('example.txt', 'Hello, World!', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('File has been saved!');
});

Escritura sincrónica

try {
    fs.writeFileSync('example.txt', 'Hello, World!');
    console.log('File has been saved!');
} catch (err) {
    console.error(err);
}

5. Agregar a archivos

Si desea agregar contenido a un archivo existente sin sobrescribirlo, utilice el método appendFile.

Adjunto asincrónico

fs.appendFile('example.txt', '\nAppended Content', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Content has been appended!');
});

Adjunto sincrónico

try {
    fs.appendFileSync('example.txt', '\nAppended Content');
    console.log('Content has been appended!');
} catch (err) {
    console.error(err);
}

6. Eliminar archivos

Para eliminar un archivo, utilice el método de desvinculación.

Eliminación asincrónica

fs.unlink('example.txt', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('File deleted!');
});

Eliminación sincrónica

try {
    fs.unlinkSync('example.txt');
    console.log('File deleted!');
} catch (err) {
    console.error(err);
}

7. Trabajar con directorios

Creando un directorio

fs.mkdir('newDir', { recursive: true }, (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Directory created!');
});

Leer un directorio

fs.readdir('newDir', (err, files) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Files in directory:', files);
});

Eliminar un directorio

fs.rmdir('newDir', { recursive: true }, (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Directory deleted!');
});

8. Ver archivos

Puedes observar los cambios en un archivo usando el método fs.watch:

fs.watch('example.txt', (eventType, filename) => {
    if (filename) {
        console.log(`${filename} file Changed!`);
    }
});

9. Trabajar con transmisiones

Node.js proporciona secuencias fs para manejar archivos grandes que pueden no caber en la memoria.

Lectura con transmisiones

const readStream = fs.createReadStream('example.txt', 'utf8');
readStream.on('data', (chunk) => {
    console.log(chunk);
});

Escribir con secuencias

const writeStream = fs.createWriteStream('example.txt');
writeStream.write('Hello, ');
writeStream.write('World!');
writeStream.end();

10. Copiar archivos

Node.js proporciona un método simple para copiar archivos:

fs.copyFile('source.txt', 'destination.txt', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('File copied successfully!');
});

11. Fs prometidas

El módulo fs también tiene métodos basados ​​en promesas, lo que facilita el trabajo con funciones modernas de JavaScript como async/await.

const fsPromises = require('fs').promises;

async function readFile() {
    try {
        const data = await fsPromises.readFile('example.txt', 'utf8');
        console.log(data);
    } catch (err) {
        console.error(err);
    }
}

readFile();

12. Casos de uso prácticos

  • Archivos de configuración: lee o escribe archivos de configuración (por ejemplo, archivos JSON) para almacenar configuraciones.
  • Archivos de registro: añádalos a los archivos de registro para realizar un seguimiento de los eventos de la aplicación.
  • Cargas de archivos: almacena y recupera archivos cargados.
  • Procesamiento de datos: lea, procese y escriba grandes conjuntos de datos de manera eficiente mediante transmisiones.

13. Manejo de errores y mejores prácticas

  • Siempre maneje los errores en las funciones de devolución de llamada o use bloques try-catch con código sincrónico.
  • Utilice métodos asincrónicos para obtener un mejor rendimiento en la mayoría de los casos.
  • Considere usar fs.promises para obtener un código más limpio y moderno.
  • Tenga cuidado con los métodos sincrónicos ya que pueden bloquear el bucle de eventos.
  • Utilice fs.constants para indicadores del sistema de archivos (por ejemplo, fs.constants.O_RDONLY para acceso de solo lectura).

14. Consideraciones de seguridad

  • Valide y desinfecte las rutas de los archivos para evitar ataques de cruce de directorios.
  • Tenga cuidado al trabajar con nombres de archivos o rutas proporcionados por el usuario.
  • Utilice los permisos de archivo adecuados al crear o modificar archivos y directorios.

15. Conclusión

El módulo fs es versátil y esencial para cualquier aplicación Node.js que necesite interactuar con el sistema de archivos. Al comprender sus diversos métodos, manejar transmisiones de manera eficiente y emplear las mejores prácticas, estará bien equipado para administrar operaciones de archivos en Node.js de manera efectiva y segura.

Recuerde consultar la documentación oficial de Node.js para obtener la información más actualizada y características adicionales del módulo fs.

Declaración de liberación Este artículo se reproduce en: https://dev.to/shanu001x/file-system-nodejs-fs-module-1hg6?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3