當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js fs.copyFileSync()用法及代碼示例


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




相關用法


注:本文由純淨天空篩選整理自sayantanm19大神的英文原創作品 Node.js | fs.copyFileSync() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。