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


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


fs.copyFile()方法用於將文件從源路徑異步複製到目標路徑。默認情況下,Node.js將覆蓋文件(如果文件已存在於給定的目的地)。可選的mode參數可用於修改複製操作的行為。

用法:

fs.copyFile( src, dest, mode, callback )

參數:該方法接受上述和以下描述的三個參數:



  • 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,則失敗將失敗,與之前的平台不同。
    • 這些常量也可以與按位或組合以創建多個值的掩碼。它是一個可選參數。該參數的默認值為0。

  • callback:該方法執行時將調用該函數。
    • err:如果方法失敗,將引發錯誤。

以下示例說明了Node.js中的fs.copyFile()方法:

範例1:本示例顯示了“example_file.txt”文件到“copied_file.txt”文件的複製操作。

// Node.js program to demonstrate the 
// fs.copyFile() method 
  
// Import the filesystem module 
const fs = require('fs'); 
  
// Get the current filenames 
// before the function 
getCurrentFilenames(); 
console.log("\nFile Contents of example_file:", 
  fs.readFileSync("example_file.txt", "utf8")); 
  
// Copying the file to a the same name 
fs.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 directory 
function getCurrentFilenames() { 
  console.log("\nCurrent filenames:"); 
  fs.readdirSync(__dirname).forEach(file => { 
    console.log(file); 
  }); 
}

輸出:

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.

範例2:本示例說明了目標已存在時複製操作失敗。

// Node.js program to demonstrate the 
// fs.copyFile() method 
  
// Import the filesystem module 
const fs = require('fs'); 
  
// Get the current filenames 
// before the function 
getCurrentFilenames(); 
console.log("\nFile Contents of example_file:",  
      fs.readFileSync("example_file.txt", "utf8")); 
  
// Copying the file to a the same name 
fs.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 directory 
function getCurrentFilenames() { 
  console.log("\nCurrent filenames:"); 
  fs.readdirSync(__dirname).forEach(file => { 
    console.log(file); 
  }); 
}

輸出:

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

參考: https://nodejs.org/api/fs.html#fs_fs_copyfile_src_dest_mode_callback




相關用法


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