经常有遇到这种场景,向某一个路径下写入一个文件,路径不存在则创建路径并创建文件,文件存在则覆盖。就是想用一个接口就可以把数据写到某路径的文件内,而不care 路径 文件 存不存的问题。
在其他语言比较容易实现。而在node中,就有点麻烦了,因为writeAPI成功的条件是路径必须存在,而路径在node老版本的情况下又要一层层往下创建。在node 10之后有递归创建路径了。这里就是基于该特性写了一个函数 方便以后用的时候找。
测试环境:ubuntu
node版本:v10.14.1
const fs = require('fs');
const writeFileRecursive = function(path, buffer, callback){
let lastPath = path.substring(0, path.lastIndexOf("/"));
fs.mkdir(lastPath, {recursive: true}, (err) => {
if (err) return callback(err);
fs.writeFile(path, buffer, function(err){
if (err) return callback(err);
return callback(null);
});
});
}
const buffer = "test hahahhhhh";
writeFileRecursive('./public/test/file1', buffer, (err)=>{
if(err) console.error(err);
console.info("write success");
});
测试代码效果为 会在当前目录下创建public/test/ 目录 并创建file1 文件 并写入buffer中的内容