Como renombrar múltiples archivos usando Node

Este artículo fue originalmente escrito en https://matiashernandez.dev



Nodejs는 기록 보관소에 대한 액세스 권한을 부여하고 작업 기록을 보관소에 보관할 수 있도록 합니다. o moverlos de un lugar a otro.

¿Node.js에 대한 질문이 현실화되는 이유는 무엇입니까?



Cambiar el nombre de un archivo es escencialmente:
  • Crear un nuevo archivo con el nombre deseado(y ubicación requerida)
  • Leer el contenido del archivo original
  • Escribir el contenido en el nuevo archivo
  • Eliminar el archivo 오리지날

  • Node.js는 모듈로 que contiene todo lo que necesitas para trabajar con archivos: fs .

    Dentro de este modulos tenemos opciones.

    Usar는 para realizar la copyia를 스트리밍합니다.



    Si estás trabajando con archivos de gran tamaño, una buena opción es utilizar streams para manipularlos.

    De forma general un stream es una secuencia de datos disponible durante el tiempo. Esto permite leer y procesar los datos en pequeños trozos.



    A la hora de trabajar con streams también hay opciones, revisemos algunas

    Leer y escribir el contenido del archivo

    const fs = require('fs')
    const original = './directorioOriginal/ArchivoOriginal.txt'
    const readStream = fs.createReadStream(original)
    const writeStream = fs.createWriteStream('./otroFolder/ArchivoCopia,.txt')
    
    
    readStream.on('data', (chunk) => {
        writeStream.write(chunk)
    })
    
    function eliminarArchivo(archivo) {
      fs.unlink(archivo, (err) => {
        if (err) {
          console.error(err)
          return
        }
        console.log('Archivo original eliminado')
      })
    }
    
    readStream.on('close', () => {
      eliminarArchivo(original)
    })
    
    
    
    
    
    
    


    En este ejemplo se crea un stream de lectura del archivo original y otro de escritura para el nuevo nombre.

    El stream de lectura lee el archivo por trozos y cada vez que esto se ejecuta.on('data',() => {}) el stream de escritura escribe ese contenido.

    Una vez que se terminó de leer.on('close') se eliminar el archivo original usandofs.unlink .

    Una opción más concisa es usar el métodopipe
    const fs = require('fs')
    const original = './directorioOriginal/ArchivoOriginal.txt'
    const readStream = fs.createReadStream(original)
    const writeStream = fs.createWriteStream('./otroFolder/ArchivoCopia.txt')
    
    function eliminarArchivo(archivo) {
      fs.unlink(archivo, (err) => {
        if (err) {
          console.error(err)
          return
        }
        console.log('Archivo original eliminado')
      })
    }
    
    // Lectura y copia en una sola linea
    readStream.pipe(writeStream)
    
    writeStream.on('finish', () => {
        console.log('Copy successfully done)
        eliminarArchivo()
    })
    
    


    Leer y escribir archivo para copiar/renombrar



    Siguiendo el patrón de "Leer, Copiar, Eliminar"는 Node.js에서 사용되는 방법 중 하나입니다.

    const fs = require('fs')
    const original = './directorioOriginal/ArchivoOriginal.txt'
    
    function eliminarArchivo(archivo) {
      fs.unlink(archivo, (err) => {
        if (err) {
          console.error(err)
          return
        }
        console.log('Archivo original eliminado')
      })
    }
    
    function leerArchivo(callback) {
      // Leer el archivo original
      fs.readFile(original, 'utf8', function (err,data) {
        if (err) {
          return console.log(err);
        }
        callback(data)
    
      });  
    }
    
    
    function escribirArchivo(data){
      fs.writeFile('./otroFolder/NuevoArchivo.txt', data, function (err) {
        if (err) return console.log(err);
        console.log(Archivo Escrito);
        eliminarArchivo(original)
      });  
    }
    
    leerArchivo((data) => escribirArchivo(data) )
    
    


    Pero este método es algo engorroso no?

    Copiar el archivo para renombrar



    Nodejs는 복사 기록 보관소fs.copyFile와 반대 서명fs.copyFileSync에 대한 방법이 없습니다.

    const fs = require('fs')
    const original = './directorioOriginal/ArchivoOriginal.txt'
    
    function eliminarArchivo(archivo) {
      fs.unlink(archivo, (err) => {
        if (err) {
          console.error(err)
          return
        }
        console.log('Archivo original eliminado')
      })
    }
    
    
    fs.copyFile(original, "./otroFolder/NuevoArchivo.txt", (err) => {
      if (err) {
        console.log("Oops! An Error Occured:", err);
      }
      else {
        eliminarArchivo(original)
        console.log("Archivo copiado")
      }
    });
    


    Esta forma es más concisa pero al leer el código, si bien, se entiende que se ha copiado y eliminado el archivo original (ergo, se renombró) la intención del código no es clara. Para esto nodejs of rece otro método

    Renombrar el archivo con rename



    Una forma más directa de renombrar archivos es utilizar fs.renameFile 또는 su contraparte sincrona fs.renameFileSync
    Estos método realizan la misma operation: "Leer, escribir, eliminar"pero esconden esta implementación of reciendo una abstracción más clara de la intención del método: Renombrar.

    const fs = require('fs')
    const original = './directorioOriginal/ArchivoOriginal.txt'
    const nuevo = './otroFolder/NuevoArchivo.txt'
    
    fs.rename(original, nuevo, () => { console.log('Archivo renombrado') })
    
    
    


    Este método es evidenceemente más consiso.

    También se puede hacer de forma sincrona o utilizando promesas

    // Sincrona
    const fs = require('fs')
    const original = './directorioOriginal/ArchivoOriginal.txt'
    const nuevo = './otroFolder/NuevoArchivo.txt'
    
    fs.renameSync(original, nuevo)
    console.log('Archivo renombrado')
    
    
    // Usando promesas
    const { promises: Fs } = require('fs')
    
    await Fs.rename(original, nuevo)  
    console.log('Archivo renombrado')
    



    ✉️ Únete a Micro-bytes 🐦 Sígueme en ❤️ Apoya mi trabajo

    좋은 웹페이지 즐겨찾기