fs.writeFile创建只读文件

时间:2017-07-16 22:38:15

标签: node.js electron readonly fs

我正在编写电子申请表,有时我需要将一些文本保存到文件中。

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

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);
                });
            }
        });
    }

该文件是在用户选择目录和文件名后创建的。但是它是以只读方式创建的,我希望它可以被创建为每个人都可以编辑。任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

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

问题在于我如何开始使用电子应用程序。 `

我使用sudo electron .来启动我的应用,因为它需要root权限才能执行某些系统任务。sudoroot创建的Hence文件只读给其他用户。要解决这个问题我使用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');
                    });
                });
            }
        });
    };