如何使用FS自动创建文件夹?

时间:2015-07-22 01:36:36

标签: javascript node.js directory fs

我正在尝试使用代码来读取数组,并使用名称作为参数之一创建文件夹(如果该名称不存在)。我一直在用fs做一个简单的循环,就像这样

var streamsRepository = streamsRepositoryFactory(__dirname + '/streams.json');
var obj = streamsRepository.streams[i];
var i;

for(i = 0; i < streamsRepository.streams.length; i++) {
    var obj = streamsRepository.streams[i];

console.log('Folder '+obj.key+' is Created');


    if (!fs.existsSync('../audio/'+obj.key)){
        fs.mkdirSync('../audio/'+obj.key);

    }
}

但每次我都收到消息。

Folder AAAA is Created
fs.js:796
  return binding.mkdir(pathModule._makeLong(path),
                 ^
Error: ENOENT: no such file or directory, mkdir '../audio/AAAA'

3 个答案:

答案 0 :(得分:10)

在下方进行测试

mkdir -p

<强>溶液
使用mkdirp,递归mkdir,如var mkdirp = require('mkdirp'); mkdirp('/tmp/foo/bar/baz', function (err) { if (err) console.error(err) else console.log('pow!') });

sim00 
sim01
sim02

答案 1 :(得分:2)

NVM,找到了解决方案。我所要做的就是更好地指定位置。

if (!fs.existsSync('/home/user/recorder/audio/'+obj.key)){
    fs.mkdirSync('/home/user/recorder/audio/'+obj.key);
    console.log ('Folder '+obj.key+' has been created');

答案 2 :(得分:0)

仅一种解决方案

!fs.existsSync(`./assets/`) && fs.mkdirSync(`./assets/`, { recursive: true })