背景
当项目里需要同时创建多层目录的功能,但低版本的nodejs并没有提供快捷的api。
尽管在v10.12.0版本 mkdir()
第二个参数支持recursive 参数,为true时能递归创建,但有版本不兼容问题。
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
var fs = require('fs'); var path = require('path');
function async(dirname, callback) { fs.exists(dirname, (exists) => { if (exists) callback(); else { async(path.dirname(dirname), () => { fs.mkdir(dirname, callback); }); } }); }
function async(dirname, callback) { fs.stat(dirname, (err, stat) => { if (stat) callback(); else { async(path.dirname(dirname), () => { fs.mkdir(dirname, callback); }); } }); }
function sync(dirname) { if (fs.existsSync(dirname)) { return true; } if (sync(path.dirname(dirname))) { fs.mkdirSync(dirname); return true; } }
function test() { console.log('=====开始创建====='); async('./a/bb/ccc/eeee', (err)=>{}); console.log('=====创建结束====='); } test()
|