Función Node.js fs.copyFileSync()

El método fs.copyFileSync() se usa para copiar sincrónicamente un archivo desde la ruta de origen a la ruta de destino. Node.js sobrescribirá el archivo si ya existe en el destino. El parámetro de modo opcional se puede utilizar para especificar el comportamiento de la operación de copia.
 

Sintaxis:  

fs.copyFileSync(src, dest, mode)

Parámetros: este método acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:  

  • src: es una string, un búfer o una URL que indica el nombre del archivo de origen para copiar.
  • destino: es una string, un búfer o una URL que indica el nombre del archivo de destino que crearía la operación de copia.
  • modo: Es un número entero que especifica el comportamiento de la operación de copia. Los valores pueden tener constantes predefinidas que tienen sus respectivos comportamientos: 
    • fs.constants.COPYFILE_EXCL: esta constante especifica que la operación de copia fallaría si el nombre de archivo de destino ya existe.
    • fs.constants.COPYFILE_FICLONE: esta constante especifica que la operación de copia intentaría crear un enlace ref de copia en escritura. Se utiliza un mecanismo alternativo si la plataforma no admite la copia en escritura.
    • fs.constants.COPYFILE_FICLONE_FORCE: esta constante especifica que la operación de copia intentaría crear un enlace ref de copia en escritura. La operación fallaría si la plataforma no soporta copy-on-write, a diferencia de la anterior.

Los siguientes ejemplos ilustran el método fs.copyFileSync() en Node.js:
Ejemplo 1: Este ejemplo muestra la operación de copia del archivo «hello.txt» al archivo «world.txt». 

javascript

    
// Node.js program to demonstrate the
// fs.copyFileSync() method
  
// Import the filesystem module
const fs = require('fs');
  
// Get the current filenames
// before the function
getCurrentFilenames();
console.log("\nFile Contents of hello.txt:",
      fs.readFileSync("hello.txt", "utf8"));
  
fs.copyFileSync("hello.txt", "world.txt");
  
// Get the current filenames
// after the function
getCurrentFilenames();
console.log("\nFile Contents of world.txt:",
      fs.readFileSync("world.txt", "utf8"));
  
// Function to get current filenames
// in directory
function getCurrentFilenames() {
  console.log("\nCurrent files in directory:");
  fs.readdirSync(__dirname).forEach(file => {
    console.log(file);
  });
}

Producción: 

Current files in directory:
hello.txt
index.js

File Contents of hello.txt: Hello World

Current files in directory:
hello.txt
index.js
world.txt

File Contents of world.txt: Hello World

Ejemplo 2: este ejemplo muestra el error de la operación de copia cuando el destino ya existe.

javascript

// Node.js program to demonstrate the
// fs.copyFileSync() method
  
// Import the filesystem module
const fs = require('fs');
  
// Get the current filenames
// before the function
getCurrentFilenames();
console.log("\nFile Contents of hello.txt:",
      fs.readFileSync("hello.txt", "utf8"));
  
try {
  fs.copyFileSync("hello.txt", "world.txt",
    fs.constants.COPYFILE_EXCL);
  
  // Get the current filenames
  // after the function
  getCurrentFilenames();
  console.log("\nFile Contents of world.txt:",
    fs.readFileSync("hello.txt", "utf8"));
}
catch (err) {
  console.log(err);
}
  
// Function to get current filenames
// in directory
function getCurrentFilenames() {
  console.log("\nCurrent filenames:");
  fs.readdirSync(__dirname).forEach(file => {
    console.log(file);
  });
}

Producción: 

Current filenames:
hello.txt
world.txt
index.js

File Contents of hello.txt: Hello World
Error: EEXIST: file already exists, copyfile 'hello.txt' -> 'world.txt'
    at Object.copyFileSync (fs.js:1790:3)
    at Object. (G:\tutorials\nodejs-fs-copyFileSync\index.js:35:6)
    at Module._compile (internal/modules/cjs/loader.js:956:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
    at Module.load (internal/modules/cjs/loader.js:812:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
    at internal/main/run_main_module.js:17:11 {
  errno: -4075,
  syscall: 'copyfile',
  code: 'EEXIST',
  path: 'hello.txt',
  dest: 'world.txt'
}

Referencia: https://nodejs.org/api/fs.html#fs_fs_copyfilesync_src_dest_mode

Publicación traducida automáticamente

Artículo escrito por sayantanm19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *