Open In App

Node.js fs.copyFileSync() Function

The fs.copyFileSync() method is used to synchronously copy a file from the source path to destination path. Node.js will overwrite the file if it already exists in the destination. The optional mode parameter can be used to specify the behavior of the copy operation.
 

Syntax:  



fs.copyFileSync(src, dest, mode)

Parameters: This method accepts three parameters as mentioned above and described below:  

Below examples illustrate the fs.copyFileSync() method in Node.js:
Example 1: This example shows the copy operation of the “hello.txt” file to the “world.txt” file. 






    
// 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);
  });
}

Output: 

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

Example 2: This example shows the failure of the copy operation when the destination already exists.




// 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);
  });
}

Output: 

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'
}

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


Article Tags :