我需要在node.js中按需创建一个临时的“临时”目录。要求是:
/tmp/aDIge4G/
/tmp
内创建目录,该目录可能已经有其他随机命名的目录。换句话说,我需要this问题的答案,但需要目录,而不是文件。
This回答说我想要做的事情可以由mkdir -p
完成,但是Node没有-p
的{{1}}标志
答案 0 :(得分:9)
您可以尝试package "tmp"。它有一个配置参数“template”,它反过来使用Linux的mkstemp函数,它可能解决了你的所有要求。
答案 1 :(得分:1)
创建唯一目录的一种简单方法是在路径名中使用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的替代品,因此您无需关心{{1}因为mkdir -p
将创建目录和任何必要的子目录。
提示:如果要将目录保存在操作系统的默认临时目录中,则可以使用os.tmpdir()。以下是一个如何工作的示例:
fs-extra
创建目录:C:\ Users \ bennyn \ AppData \ Local \ Temp \ 057a9978-4fd7-43d9-b5ea-db169f222dba
答案 2 :(得分:1)
当前节点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
答案 3 :(得分:0)
使用fs.Stats检查它是否存在?
这样的东西?
fs.stat(path, function(err, stats) {
if (!stats.isDirectory()) {
// create directory here
}
}