当使用Node.js的fs.renameSync()
方法将文件移动到另一个文件系统或磁盘驱动器时,可能会遇到以下错误:
Error: EXDEV, cross-device link not permitted
这是由于操作系统不允许在文件系统之间创建硬链接或符号链接而引起的。需要使用另一种方法来移动文件。
可以使用fs.createReadStream()
方法读取文件,并使用fs.createWriteStream()
将其写入新位置。如下所示的示例说明:
const fs = require('fs');
const path = require('path');
const oldFilePath = path.join(__dirname, 'oldDir', 'file.txt');
const newFilePath = path.join(__dirname, 'newDir', 'file.txt');
const readStream = fs.createReadStream(oldFilePath);
const writeStream = fs.createWriteStream(newFilePath);
readStream.on('error', (error) => {
console.error('An error occurred while reading the file: ', error);
});
writeStream.on('error', (error) => {
console.error('An error occurred while writing the file: ', error);
});
writeStream.on('finish', () => {
console.log('The file has been moved successfully!');
});
readStream.pipe(writeStream);
上面的代码将文件从名为oldDir
的文件夹中复制到名为newDir
的文件夹中。
另外,也可以使用fs-extra
模块提供的move()
方法来移动文件。示例如下:
const fse = require('fs-extra');
const path = require('path');
const oldFilePath = path.join(__dirname, 'oldDir', 'file.txt');
const newFilePath = path.join(__dirname, 'newDir', 'file.txt');
fse.move(oldFilePath, newFilePath, (error) => {
if (error) {
console.error('An error occurred while moving the file: ', error);
} else {
console.log('The file has been moved successfully!');
}
});
这里使用fs-extra
模块提供的move()
方法将文件从名为oldDir
的文件夹中移动到名为newDir
的文件夹中。
总之,以上两种方法可以避免使用fs.renameSync()
方法移动文件时发生Error: EXDEV, cross-device link not permitted
错误的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted) - Python技术站