fs.copyFileSync()方法用于将文件从源路径同步复制到目标路径。如果目标中已存在该文件,Node.js将覆盖该文件。可选的mode参数可用于指定复制操作的行为。
用法:
fs.copyFileSync(src, dest, mode)
参数:此方法接受上述和以下所述的三个参数:
- src:它是一个字符串,缓冲区或URL,表示要复制的源文件名。
 - dest:它是一个字符串,缓冲区或URL,表示复制操作将创建的目标文件名。
 - mode:它是一个整数,指定复制操作的行为。可以为这些值提供预定义的常量,这些常量具有各自的行为:
- fs.constants.COPYFILE_EXCL:该常数指定如果目标文件名已经存在,则复制操作将失败。
 - fs.constants.COPYFILE_FICLONE:此常量指定复制操作将尝试创建copy-on-write reflink。如果平台不支持copy-on-write,则使用回退机制。
 - fs.constants.COPYFILE_FICLONE_FORCE:此常量指定复制操作将尝试创建copy-on-write reflink。如果平台不支持copy-on-write,则失败将失败,与之前的平台不同。
 
这些常数也可以与按位OR组合以创建多个值的掩码。它是一个可选参数。该参数的默认值为0。
 
以下示例说明了Node.js中的fs.copyFileSync()方法:
范例1:本示例显示了“hello.txt”文件到“world.txt”文件的复制操作。
    
// 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); 
  }); 
}输出:
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
范例2:此示例显示了目标已存在时复制操作失败。
// 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); 
  }); 
}输出:
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'
}
参考: https://nodejs.org/api/fs.html#fs_fs_copyfilesync_src_dest_mode
相关用法
- Node.js GM orderedDither()用法及代码示例
 - Node.js GM border()用法及代码示例
 - Node.js GM median()用法及代码示例
 - Node.js GM bordercolor()用法及代码示例
 - Node.js GM shave()用法及代码示例
 - Node.js GM roll()用法及代码示例
 - Node.js GM flip()用法及代码示例
 - Node.js GM drawArc()用法及代码示例
 - Node.js GM drawLine()用法及代码示例
 - Node.js GM enhance()用法及代码示例
 - Node.js GM sepia()用法及代码示例
 - Node.js GM paint()用法及代码示例
 - Node.js GM transparent()用法及代码示例
 - Node.js GM thumbnail()用法及代码示例
 
注:本文由纯净天空筛选整理自sayantanm19大神的英文原创作品 Node.js | fs.copyFileSync() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
