我在Mac上有一个具有完整磁盘权限的电子应用程序。我正在使用fs在一个受保护的文件夹中创建一个目录,并将文件从临时文件夹复制到新目录。
使用fs.copy
时,我定期得到两种不同类型的错误:
-
如果该目录已经存在并且为用户所有:
- EPERM错误(不允许操作,unlink xxx)当试图覆盖现有目录时,特别是在替换清单时。json文件。
-
如果目录不存在或属于根目录:
- 试图创建目录或将文件复制到新位置时出现EACCES错误。
代码:
[...Array(sourceDirs.length).keys()].map(async (idx) => {
try {
await fs.ensureDir(destPaths[idx]);
}
catch (e) {
console.log('Directory does not exist and could not be created');
}
try {
await fs.copy(sourceDirs[idx], destPaths[idx]);
}
catch (e) {
console.log('Copy error:', e);
}
});
经过更多的研究,我确定目录的R/W权限根据创建目录的实体而变化。目录及其子目录的某些元素为root所有,everyone
仅具有读权限,而其他文件夹为everyone
所有且具有写权限。