2016-03-01 65 views
7

我需要在node.js中按需創建一個臨時「scratch」目錄。要求是:如何在沒有衝突的節點中創建tmp目錄

  • 的目錄名稱應該是隨機的(即/tmp/aDIge4G/
  • 目錄將在/tmp可能已經有其他隨機命名的目錄中創建
  • 如果該目錄已經存在,我應該扔掉相當。比使用它並覆蓋別人的工作
  • 這需要在併發環境中安全我不能只檢查目錄是否存在,然後創建它,如果它不是因爲別人可能創建了一個目錄在之後同名我查過了。

換句話說,我需要this問題的答案,但對於目錄而不是文件。

This回答說,我想做的事可以通過mkdir -p來完成,但節點沒有-p標誌fs.mkdir

回答

6

您可以試試package "tmp"。它有一個配置參數「模板」,該模板反過來使用Linux的mkstemp函數,該函數可能會解決您的所有需求。

+0

謝謝!更好的解決方案,然後我可以夢想。 – BonsaiOak

0

使用fs.Stats來檢查它是否存在?

這樣的事情?

fs.stat(path, function(err, stats) { 

    if (!stats.isDirectory()) { 
     // create directory here 
    } 
} 
+1

如果其他人在我做'if(!stats.isDirectory())時創建了一個目錄' – BonsaiOak