在每个事件之后创build目录
我正在尝试每个button单击事件后创build一个目录。 这只能工作到10个目录
5612cfea107f9e0f356b3dee_1 5612cfea107f9e0f356b3dee_2 5612cfea107f9e0f356b3dee_3 5612cfea107f9e0f356b3dee_n
然后我得到这个错误:
Error: EEXIST: file already exists, mkdir 'user/public/uploadGallery/5612cfea107f9e0f356b3dee_10'
app.post('/createDirectories', function(req, res) { var id = '5612cfea107f9e0f356b3dee'; var pathDirectory = __dirname + '/public/uploadGallery/' + id; fs.readdir(__dirname + '/public/uploadGallery/', function (err, files) { var countVal = files.filter(junk.not).length; var fileVal = files.filter(junk.not); if(countVal == '0'){ fs.mkdirSync(pathDirectory + '_' + 1); console.log("Directory created: " + pathDirectory + '_' + 1); }else{ var lastElem = fileVal[fileVal.length-1]; var lastElemSplitValue = lastElem.split("_")[1]; var valInt = parseInt(lastElemSplitValue, 10) +1; fs.mkdirSync(pathDirectory + '_' + valInt); } }); });
我能做些什么来解决这个问题? 我想创buildn个目录。
谢谢你的帮助。 马丘比丘
问题是sorting
你会有目录
- _1
- _2
- …
- _9
添加第10个 – 按字母顺序或词法顺序,您将拥有
- _1
- _10
- _2
- …
- _9
所以,最后一个文件夹是_9
… 9 + 1 = 10 …已经存在!
你可以改变你的代码
} else { var valInt = Math.max.apply(null, fileVal.map(function(entry) { return parseInt(entry.split("_").pop(), 10); })) + 1; fs.mkdirSync(pathDirectory + '_' + valInt); }
这将Math.max应用于将fileVal条目映射到由'_'分割的每个fileVal条目的最后部分的parseInt的结果