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

How do I use FS to make a folder automatically?

本文关键字:创建 文件夹 何使用 FS      更新时间:2023-09-26

我试图使用代码读取数组,并使用该名称作为参数之一创建文件夹,如果该名称不存在。我一直在使用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'

下面有一个测试

'use strict';
var fs = require('fs');
// fs.mkdirSync('folda'); // success
fs.mkdirSync('/parent-not-exists/folda'); 
// Failed,if parent folder isn't exists,will throw 
// Error: ENOENT, no such file or directory '/parent-not-exists/folda'
<<p> 解决方案/strong>
使用mkdirp,递归地使用mkdir,如mkdir -p
var mkdirp = require('mkdirp');
mkdirp('/tmp/foo/bar/baz', function (err) {
    if (err) console.error(err)
    else console.log('pow!')
});

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');

一行解

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