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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。