最近开发过程中,有一个文件的增删操作。遇到一个困扰我很久的问题。
一、问题描述
-
electron新建的文件,关闭应用程序之前,删除报错,错误如下所示:
image.png
2.关闭应用程序以后,正常删除
3.新建的文件,删除报错后找到这个文件,右键属性,发现文件权限变了,不可读取了。但是删除之前权限是没有问题的。
2.相关代码
# 新建文件并写入
let ws = fs.createWriteStream(url), { mode: 0o755 })
ws.write(data.content, err => {})
# 删除文件
if(fs.existsSync(url)) {
fs.unlink(url ,function (err) {
console.log('err',err)
if (err) throw err;
})
}
3.产生问题的原因
fs.write
这种方式创建文件写入文件,没有关闭文件,导致程序占用这个文件,无法进行删除操作
4.解决方法
采用下面的方法创建和写入文件
fs.writeFile(url, content,(err, stats) => {
if (err) throw err;
console.log(`删除失败,文件状态: ${JSON.stringify(stats)}`);
})