在每个事件之后创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的结果