Bon*_*Oak 14 javascript directory concurrency file node.js
我需要在node.js中按需创建一个临时的"临时"目录.要求是:
/tmp/aDIge4G//tmp其中可能已经有其他随机命名的目录.换句话说,我需要这个问题的答案,但对于目录,而不是文件.
这个答案说我想做的事情可以通过mkdir -p,但Node没有-p标志fs.mkdir
创建唯一目录的一种简单方法是在路径名中使用通用唯一标识符(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}`);
});
Run Code Online (Sandbox Code Playgroud)
您将得到如下输出:
创建目录: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}`);
});
Run Code Online (Sandbox Code Playgroud)
创建目录:C:\Users\bennyn\AppData\Local\Temp\057a9978-4fd7-43d9-b5ea-db169f222dba
当前的节点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
Run Code Online (Sandbox Code Playgroud)