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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。