electronjs 文件IO

背景

想使用electron开发一款记事本软件,涉及到js的文件IO,在网上搜索了好久找到的都是误人子弟的文章,故在这里将自己的一些做法记录下来

读取文件

读取文件需要先使用electron提供的组件dialog调出文件选择窗口,然后读取相关的路径

const {dialog} = require('electron').remote;
this.path = dialog.showOpenDialog({properties: ['openFile']})[0];

设定要读取的文件大小
let buf = new Buffer(1024);
使用node的fs模块来读取文件,因为普通的js是没有权限读取

const fs = require('fs');
fs.open(this.path, 'r+', (err, fd) => {
    if (err) {
        return console.log(err);
    }
    fs.read(fd, buf, 0, buf.length, 0, (err, bytes) => {
        if (err) {
            console.log(err);
        }
        if (bytes > 0) {
            //buf.slice(0, bytes).toString()为读取到的内容
            this.codemirror.setValue(buf.slice(0, bytes).toString());
        }
    });
    // 关闭文件
    fs.close(fd, function (err) {
        if (err) {
            console.log(err);
        }
    });
});

写入文件

写入文件同样使用fs模块

fs.writeFile(this.path, this.codemirror.getValue(), (err) => {
    if (err) {
        console.log(err);
    } else {
        this.$message({
            message: '保存成功',
            type: 'success'
        });
    }
})

你可能感兴趣的:(electronjs 文件IO)