Node.jsにオンデマンドで一時的な「スクラッチ」ディレクトリを作成する必要があります。要件は次のとおりです。
/tmp/aDIge4G/
/tmp
内に作成されます。このディレクトリには、ランダムに名前が付けられた他のディレクトリがすでに存在する場合があります。言い換えれば、私は this の質問に対する答えが必要ですが、ファイルではなくディレクトリについてです。
これ 答えは、私がやりたいことはmkdir -p
で実行できると言いますが、Nodeには-p
のfs.mkdir
フラグがありません
package "tmp" を試すことができます。 Linuxの mkstemp 関数を使用する構成パラメーター「テンプレート」があり、おそらくすべての要件を解決します。
現在のノードAPIは一時フォルダーの作成を提案します: https://nodejs.org/api/fs.html#fs_fs_mkdtemp_prefix_options_callback
それは与える:
fs.mkdtemp(path.join(os.tmpdir(), 'foo-'), (err, folder) => {
if (err) throw err;
console.log(folder);
// Prints: /tmp/foo-itXde2
});
// folder /tmp/foo-itXde2 has been created on the file system
一意のディレクトリを作成する簡単な方法は、パス名内で universally unique identifiers (UUID)を使用することです。
pure-uuid の使用例を次に示します。
const fs = require('fs-extra');
const path = require('path');
const UUID = require('pure-uuid');
const id = new UUID(4).format();
const directory = path.join('.', 'temp', id);
fs.mkdirs(directory).then(() => {
console.log(`Created directory: ${directory}`);
});
次のような出力が得られます。
作成されたディレクトリ:temp\165df8b8-18cd-4151-84ca-d763e2301e14
注:上記のコードでは、ドロップイン置換として fs-extra を使用しています fs の場合、mkdir -p
がディレクトリと必要なサブディレクトリを作成するため、fs-extra
を気にする必要はありません。
ヒント:オペレーティングシステムのデフォルトの一時ディレクトリ内にディレクトリを保存する場合は、 を使用できます。 os.tmpdir() 。これがどのように機能するかの例です:
const fs = require('fs-extra');
const os = require('os');
const path = require('path');
const UUID = require('pure-uuid');
const id = new UUID(4).format();
const directory = path.join(os.tmpdir(), id);
fs.mkdirs(directory).then(() => {
console.log(`Created directory: ${directory}`);
});
作成されたディレクトリ:C:\ Users\bennyn\AppData\Local\Temp\057a9978-4fd7-43d9-b5ea-db169f222dba
fs.Stats を使用して、存在するかどうかを確認しますか?
このようなもの?
fs.stat(path, function(err, stats) {
if (!stats.isDirectory()) {
// create directory here
}
}