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