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
相關用法
- Node.js GM transparent()用法及代碼示例
- Node.js GM thumbnail()用法及代碼示例
- Node.js GM threshold()用法及代碼示例
- Node.js GM resize()用法及代碼示例
- Node.js GM segment()用法及代碼示例
- Node.js GM quality()用法及代碼示例
- Node.js GM raise()用法及代碼示例
- Node.js GM drawRectangle()用法及代碼示例
- Node.js GM whiteThreshold()用法及代碼示例
- Node.js GM write()用法及代碼示例
- Node.js GM drawBezier()用法及代碼示例
- Node.js GM drawPolyline()用法及代碼示例
- Node.js GM spread()用法及代碼示例
- Node.js GM drawPolygon()用法及代碼示例
注:本文由純淨天空篩選整理自sayantanm19大神的英文原創作品 Node.js | fs.copyFile() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。