背景
想使用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'
});
}
})
网友评论