Node.js | fs.copyFile() Function

07 Oct, 2021
The fs.copyFile() method is used to asynchronously copy a file from the source path to destination path. By default, Node.js will overwrite the file if it already exists at the given destination. The optional mode parameter can be used to modify the behavior of the copy operation.
Syntax: 
fs.copyFile( src, dest, mode, callback )
Parameters: This method accepts three parameters as mentioned above and described below: 
src: It is a String, Buffer or URL that denotes the source filename to copy.
dest: It is a String, Buffer or URL that denotes the destination filename that the copy operation would create.
mode: It is an integer that specifies the behavior of the copy operation. The values can be given predefined constants that have their respective behaviours: fs.constants.COPYFILE_EXCL: This constant specifies that the copy operation would fail if the destination filename already exists.fs.constants.COPYFILE_FICLONE: This constant specifies that the copy operation would try to create a copy-on-write reflink. A fallback mechanism is used if the platform does not support copy-on-write.fs.constants.COPYFILE_FICLONE_FORCE: This constant specifies that the copy operation would try to create a copy-on-write reflink. The operation would fail if the platform does not support copy-on-write, unlike the previous one.
fs.constants.COPYFILE_EXCL: This constant specifies that the copy operation would fail if the destination filename already exists.
fs.constants.COPYFILE_FICLONE: This constant specifies that the copy operation would try to create a copy-on-write reflink. A fallback mechanism is used if the platform does not support copy-on-write.
fs.constants.COPYFILE_FICLONE_FORCE: This constant specifies that the copy operation would try to create a copy-on-write reflink. The operation would fail if the platform does not support copy-on-write, unlike the previous one.
These constants can also be combined with bitwise OR to create a mask of more than one value. It is an optional parameter. The default value of the parameter is 0.
callback: It is a function that would be called when the method is executed. err: It is an error that would be thrown if the method fails.
err: It is an error that would be thrown if the method fails.
Below examples illustrate the fs.copyFile() method in Node.js:
Example 1: This example shows the copy operation of the “example_file.txt” file to “copied_file.txt” file.
Javascript
// Node.js program to demonstrate the// fs.copyFile() method // Import the filesystem moduleconst fs = require('fs'); // Get the current filenames// before the functiongetCurrentFilenames();console.log("\nFile Contents of example_file:",  fs.readFileSync("example_file.txt", "utf8")); // Copying the file to a the same namefs.copyFile("example_file.txt", "copied_file.txt", (err) => {  if (err) {    console.log("Error Found:", err);  }  else {     // Get the current filenames    // after the function    getCurrentFilenames();    console.log("\nFile Contents of copied_file:",      fs.readFileSync("copied_file.txt", "utf8"));  }}); // Function to get current filenames// in directoryfunction getCurrentFilenames() {  console.log("\nCurrent filenames:");  fs.readdirSync(__dirname).forEach(file => {    console.log(file);  });}
Output: 
Current filenames:
example_file.txt
index.js

File Contents of example_file: This is a test file.

Current filenames:
copied_file.txt
example_file.txt
index.js

File Contents of copied_file: This is a test file.
Example 2: This example shows the failure of the copy operation when the destination already exists.
Javascript
// Node.js program to demonstrate the// fs.copyFile() method // Import the filesystem moduleconst fs = require('fs'); // Get the current filenames// before the functiongetCurrentFilenames();console.log("\nFile Contents of example_file:",      fs.readFileSync("example_file.txt", "utf8")); // Copying the file to a the same namefs.copyFile("example_file.txt", "copied_file.txt",      fs.constants.COPYFILE_EXCL, (err) => {  if (err) {    console.log("Error Found:", err);  }  else {     // Get the current filenames    // after the function    getCurrentFilenames();    console.log("\nFile Contents of copied_file:",      fs.readFileSync("copied_file.txt", "utf8"));  }}); // Function to get current filenames// in directoryfunction getCurrentFilenames() {  console.log("\nCurrent filenames:");  fs.readdirSync(__dirname).forEach(file => {    console.log(file);  });}
Output: 
Current filenames:
copied_file.txt
example_file.txt
index.js

File Contents of example_file: This is a test file.
Error: [Error: EEXIST: file already exists, copyfile 
  'G:\tutorials\nodejs-fs-copyFile\example_file.txt' -> 
  'G:\tutorials\nodejs-fs-copyFile\copied_file.txt'] {
  errno: -4075,
  code: 'EEXIST',
  syscall: 'copyfile',
  path: 'G:\\tutorials\\nodejs-fs-copyFile\\example_file.txt',
  dest: 'G:\\tutorials\\nodejs-fs-copyFile\\copied_file.txt'
}
Reference: https://nodejs.org/api/fs.html#fs_fs_copyfile_src_dest_mode_callback 
rajeev0719singh
varshagumber28
Node.js-fs-module
Node.js
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to install the previous version of node.js and npm ?
Difference between promise and async await in Node.js
Mongoose | findByIdAndUpdate() Function
Node.js forEach() function
JWT Authentication with Node.js
Top 10 Projects For Beginners To Practice HTML and CSS Skills
Difference between var, let and const keywords in JavaScript
How to insert spaces/tabs in text using HTML/CSS?
How to fetch data from an API in ReactJS ?
Differences between Functional Components and Class Components in React