如何解决无法将文件复制到 Node.js 中的未知目录
const { resolve } = require("path");
const prompt = require('prompt');
const fsPath = require('fs-path');
// Get files from Dir
const getFiles = dir => {
const stack = [resolve(dir)];
const files = [];
while (stack.length) {
dir = stack.pop();
fs.readdirsync(dir).forEach(item => {
const path = resolve(dir,item);
(fs.statSync(path).isDirectory() ? stack : files).push(path);
});
}
return files;
};
prompt.start();
// Prompt for Dir
prompt.get(['from','to'],async(err,res) => {
if (err) {
return console.log(err);
} else {
let fromFiles = await getFiles(String(res.from));
let toFiles = await getFiles(String(res.to));
let isEqual = JSON.stringify(fromFiles) == JSON.stringify(toFiles);
let out = res.to;
if (isEqual) {
return console.log('Both folders are same. Try it with an other folder!');
} else {
let dif = [];
// Check differences -> to path
await fromFiles.forEach(path => {
if (!toFiles.includes(path)) {
dif.push(path)
}
});
dif.forEach(difference => {
fsPath.copy(`${difference}`,`${out + difference.split(__dirname)[1]}`,(error) => {
if (error) {
console.log(error);
} else {
console.log('Successfully copied item.')
}
});
});
}
}
});
大家好,在上面的代码中,我只想复制“toFiles”文件夹中不存在的文件。 但是我有一个问题,如果我尝试使用 fsPath npm 包来做它,它会给出这样的错误“错误:ENOENT:没有这样的文件或目录”。通常,如果没有父文件夹,包应该创建父文件夹。但它不知何故不起作用。有人可以照顾代码并尝试修复它吗?非常感谢。
解决方法
文件夹不存在,您可以先用mkdir
创建文件夹:
fsPath.mkdir(String(res.to),{ recursive: true },(err) => {
if (err) throw err;
// code
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。