Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用FS自动创建文件夹?_Javascript_Node.js_Directory_Fs - Fatal编程技术网

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

Javascript 如何使用FS自动创建文件夹?,javascript,node.js,directory,fs,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++) {

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

    }
}

进行以下测试

'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'
解决方案
递归地使用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 })

obj和i不应该在顶部声明为全局变量而不是在for循环中声明。您是如何检查错误的?你安排了试一试吗?试着做
Try{fs.mkdirSync(path);}catch(e){if(e.code!=“EEXIST”)抛出e;}
好的,试一下。现在它告诉我fs.js:796 return binding.mkdir(pathModule.\u makeLong(path),^Error:enoint:没有这样的文件或目录,mkdir'../audio/似乎没有
/audio
目录可以在其中创建任何内容。您可以使用'fs extra'模块,它有API来满足您的需要。
!fs.existsSync(`./assets/`) && fs.mkdirSync(`./assets/`, { recursive: true })