2016-03-01 20 views
7

Potrzebuję utworzyć tymczasowy katalog "scratch" na żądanie w node.js. Wymagania są:Jak utworzyć katalog tmp w węźle bez kolizji

  • dirname należy randomizacji (tj /tmp/aDIge4G/
  • katalog zostanie utworzony w ciągu /tmp które mogą już mieć inne losowo nazwach katalogów
  • jeśli katalog już istnieje, należy rzucam dość. niż używać go i nadpisywać czyjejś pracy
  • to musi być bezpieczne w środowisku współbieżnym.Nie mogę po prostu sprawdzić, czy katalog istnieje, a następnie utworzyć go, jeśli tak nie jest, ponieważ ktoś inny mógł utworzyć katalog z ta sama nazwa: po Sprawdziłem.

Innymi słowy, potrzebuję odpowiedzi na pytanie this, ale dla katalogów, nie plików.

This odpowiedź mówi, że to, co chcę zrobić, może być dokonane przez mkdir -p, ale węzeł nie ma flagę -p dla fs.mkdir

Odpowiedz

6

Możesz spróbować package "tmp". Ma parametr konfiguracyjny "szablon", który z kolei korzysta z funkcji Linuksa mkstemp, która prawdopodobnie rozwiązuje wszystkie twoje wymagania.

+0

Dzięki! Lepsze rozwiązanie niż mogłem sobie wymarzyć. – BonsaiOak

0

użytkowania fs.Stats aby sprawdzić, czy istnieje?

Coś takiego?

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

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

Co jeśli ktoś inny utworzył katalog podczas wykonywania 'if (! Stats.isDirectory())' – BonsaiOak

Powiązane problemy