fs.writeFile 创建只读文件



我正在编写一个电子应用程序,有时我需要将一些文本保存到文件中。

我正在使用对话框模块让用户选择保存文件的位置并热命名文件。 以下是处理文件创建的代码部分:

var exportSettings = (event, settings) => {
//settings is a css string 
console.log(settings)
dialog.showSaveDialog({
title: 'Export settings as theme',
filters: [{
name: 'UGSM theme(CSS)',
extensions: ['css']
}]
},(fileName) => {
console.log('callback scope');
console.log(fileName);
if (fileName) {
fs.writeFile(fileName, settings, (error) => {
console.log(error);
});
}
});
}

在用户选择目录和文件名后创建文件。但是,它是以只读方式创建的,我希望它被创建为每个人都可以编辑的。知道为什么会这样吗?

嘿终于找到了问题的根本原因

问题在于我是如何启动电子应用程序的。

我使用sudo electron .来启动我的应用程序,因为它需要 root 访问权限才能执行某些系统任务。因此,sudoroot创建的文件对其他用户是只读的。为了解决这个问题,我使用chmod()在创建文件后更改文件的权限。

这是我的解决方案:

var exportSettings = (event, settings) => {
dialog.showSaveDialog({
title: 'Export settings as theme',
filters: [{
name: 'UGSM theme(CSS)',
extensions: ['css']
}]
}, (fileName) => {
if (fileName) {
fs.writeFile(fileName, settings, (error) => {
//Since this code executes as root the file being created is read only.
//chmod() it
fs.chmod(fileName, 0666, (error) => {
console.log('Changed file permissions');
});
});
}
});
};

相关内容

  • 没有找到相关文章

最新更新