调制
一个简单的临时文件和目录创建者 节点.js.
关于
这是一个 广泛使用的库 创建临时文件和目录 在一个 节点.js 环境.
Tmp同时提供同步和同步的API. 所有API的电话,所有 参数是可选的。 也存在混合版本的 API,见 tmp 保证。 。 。 .
Tmp使用加密来确定随机文件名,或者,当使用模板时, 6个字母随机标识符。 以防你没有那么多钱 在你的系统上留下的 en,Tmp会倒回伪随机数.
您可以设定是否要删除进程退出时的临时文件 没有.
如果您不想将您的临时目录和文件存储在 标准 OS 临时目录,那么您也可以随意覆盖它.
关于以前无记录中断更改的重要说明
所有被引入的突破性变化,即:.
- tmpdir必须位于所定义的tmpdir 根下.
- 空间被倒塌为单一空间
- 删除所有单一和双引号字符
v. 2.2中恢复了原样,tmp现在应该像以前那样行事 引入这些断裂变化.
其他断裂变化,即:.
- 模板必须相对 tmpdir
- 名称必须相对于 tmpdir
- dir 选项必须相对 tmpdir
目前仍在执行.
为了覆盖系统的tmpdir,您必须使用新 引入 tmpdir 选项 .
关于兼容性的重要说明
见 变化 更多信息.
版本0.2.3
- 节点版QQ 14.4已放弃.
- 边缘已经从属地掉下来了
版本0.2.2
自0.2.2版本起,已放弃了对QQ14节点版本的所有支持.
版本为0.1.0
自0.1.0版本起,对节点版本 < 0.1.0.0的所有支持被放弃.
最重要的是,对于更早版本的节点-tmp的任何支持也被放弃.
如果您还需要 < 0. 0.0 的节点版本, 那么您必须限制您的节点- tmp 依赖0.1.0以下版本.
第0.0.33号版本
自0.0.33版本起,对节点版本 < 0.8的所有支持被放弃.
如果您还需要节点版本 0.8, 那你必须限制您的节点 - tmp 依赖0.0.33版本.
对于节点版本 < 0.8, 您必须限制您的节点- tmp依赖性 版本 < 0.0.33.
如何安装
npm install tmp
使用量
请检查 API 文件。 。 。 .
优雅的清理
如果设置了优雅的清理,tmp将在进程退出时去除所有被控制的临时对象,否则临时对象将留在原地,等待系统重启或其他安排的临时对象去除时被清理.
为了执行,你可以打电话 setGracefulCleanup() 方法 :
const tmp = require('tmp');
tmp.setGracefulCleanup();
同步文件创建
简单的临时文件创建,文件将在进程退出时被关闭并解链接.
const tmp = require('tmp');
tmp.file(function _tempFileCreated(err, path, fd, cleanupCallback) {
if (err) throw err;
console.log('File: ', path);
console.log('Filedescriptor: ', fd);
// If we don't need the file anymore we could manually call the cleanupCallback
// But that is not necessary if we didn't pass the keep option because the library
// will clean after itself.
cleanupCallback();
});
同步文件创建
以上同步版本.
const tmp = require('tmp');
const tmpobj = tmp.fileSync();
console.log('File: ', tmpobj.name);
console.log('Filedescriptor: ', tmpobj.fd);
// If we don't need the file anymore we could manually call the removeCallback
// But that is not necessary if we didn't pass the keep option because the library
// will clean after itself.
tmpobj.removeCallback();
请注意,如果有两种情况之一,这可能会造成例外: 创建临时名称失败,或者在您没有权限的情况下 以写入该临时文件应当创建的目录.
同步目录创建
简单的临时目录创建,将在进程退出时被删除.
如果目录仍然包含进程退出上的项目,则不会被删除.
const tmp = require('tmp');
tmp.dir(function _tempDirCreated(err, path, cleanupCallback) {
if (err) throw err;
console.log('Dir: ', path);
// Manual cleanup
cleanupCallback();
});
如果你想清理目录,即使里面有条目,那么
你可以通过 unsafeCleanup 选项.
同步目录创建
以上同步版本.
const tmp = require('tmp');
const tmpobj = tmp.dirSync();
console.log('Dir: ', tmpobj.name);
// Manual cleanup
tmpobj.removeCallback();
请注意,如果有两种情况之一,这可能会造成例外: 创建临时名称失败,或者在您没有权限的情况下 以写入该临时目录应创建的目录.
同步文件名生成
在此库中可以生成一个指定文件名 目录.
const tmp = require('tmp');
tmp.tmpName(function _tempNameGenerated(err, path) {
if (err) throw err;
console.log('Created temporary filename: ', path);
});
同步文件名生成
以上同步版本.
const tmp = require('tmp');
const name = tmp.tmpNameSync();
console.log('Created temporary filename: ', name);
高级用途
同步文件创建
用模式创建文件 0644,前缀将是 prefix- 后补 .txt。 。 。 .
const tmp = require('tmp');
tmp.file({ mode: 0o644, prefix: 'prefix-', postfix: '.txt' }, function _tempFileCreated(err, path, fd) {
if (err) throw err;
console.log('File: ', path);
console.log('Filedescriptor: ', fd);
});
同步文件创建
以上同步版本.
const tmp = require('tmp');
const tmpobj = tmp.fileSync({ mode: 0o644, prefix: 'prefix-', postfix: '.txt' });
console.log('File: ', tmpobj.name);
console.log('Filedescriptor: ', tmpobj.fd);
控制描述符
作为创建唯一文件的副作用 tmp 获得文件描述符,即
返回用户 fd 参数。 描述词可以用于:
应用程序,并在 removeCallback 被援引.
在某些情况下,应用程序不需要描述符,需要关闭 不删除文件,或需要删除文件而不关闭文件 释相. 两种选项控制描述符的管理方式:
discardDescriptor- 狦true原因tmp在文件后关闭描述符 创建。 在这种情况下fd参数未定义.detachDescriptor- 狦true原因tmp返回fd参数,但当它不是时,关闭是应用程序的责任 需要更长的时间.
const tmp = require('tmp');
tmp.file({ discardDescriptor: true }, function _tempFileCreated(err, path, fd, cleanupCallback) {
if (err) throw err;
// fd will be undefined, allowing application to use fs.createReadStream(path)
// without holding an unused descriptor open.
});
const tmp = require('tmp');
tmp.file({ detachDescriptor: true }, function _tempFileCreated(err, path, fd, cleanupCallback) {
if (err) throw err;
cleanupCallback();
// Application can store data through fd here; the space used will automatically
// be reclaimed by the operating system when the descriptor is closed or program
// terminates.
});
同步目录创建
创建带有模式的目录 0755,前缀将是 myTmpDir_。 。 。 .
const tmp = require('tmp');
tmp.dir({ mode: 0o750, prefix: 'myTmpDir_' }, function _tempDirCreated(err, path) {
if (err) throw err;
console.log('Dir: ', path);
});
同步目录创建
再说一遍,上面的同步版本.
const tmp = require('tmp');
const tmpobj = tmp.dirSync({ mode: 0750, prefix: 'myTmpDir_' });
console.log('Dir: ', tmpobj.name);
mkstemp 像,同步
用模式创建新的临时目录 0700 文件名类似 /tmp/tmp-nk2J1u。 。 。 .
重要说明:模板不再接受路径. 如果您使用目录选项, 请使用
要求 tmp 将您的临时文件系统对象创建到不同于
默认 tmp.tmpdir。 。 。 .
const tmp = require('tmp');
tmp.dir({ template: 'tmp-XXXXXX' }, function _tempDirCreated(err, path) {
if (err) throw err;
console.log('Dir: ', path);
});
mkstemp 像,同步
这将与同步版本相似 .
const tmp = require('tmp');
const tmpobj = tmp.dirSync({ template: 'tmp-XXXXXX' });
console.log('Dir: ', tmpobj.name);
同步文件名生成
使用 tmpName() 您可以同步创建临时文件名称.
该函数接受所有标准选项,例如. prefix, (中文(简体) ), postfix, (中文(简体) ), dir,等等。 (笑声).
也可以将选项全部删除,并仅以回调为第一个参数调用函数.
const tmp = require('tmp');
const options = {};
tmp.tmpName(options, function _tempNameGenerated(err, path) {
if (err) throw err;
console.log('Created temporary filename: ', path);
});
同步文件名生成
这个 tmpNameSync() 函数工作类似 tmpName()。 。 。 .
同样,您可以完全不使用选项,并且只需在没有任何参数的情况下引用函数.
const tmp = require('tmp');
const options = {};
const tmpname = tmp.tmpNameSync(options);
console.log('Created temporary filename: ', tmpname);
选项
所有选项都是可选的 :)
name:一个固定的名称,它可以覆盖随机名称生成,名称必须是相对的,并且不能包含路径段mode: 要创建的文件模式, 回落到0o600文件创建和0o700关于目录创建的prefix: 可选前缀,默认为tmppostfix: 可选后缀template数字 :mkstemp如文件名模板, 不默认, 必须包含XXXXXX用于随机名称生成的一次,例如. (原始内容存档于2018-09-30). 'foo-bar-'.dir:必须相对于系统默认临时目录的可选临时目录. 绝对路径只要指向系统默认临时目录下的一个位置即可. 沿着这样指定的路径的任何目录必须存在,否则在访问时会出现ENOENT出错, 由于 tmp 将不会检查路径的可用性,也不会为您建立所请求的路径.tmpdir: 允许您覆盖系统的根 tmp 目录tries: 函数在放弃、 默认之前要尝试获得一个唯一文件名的次数3keep: 退出时不应删除临时文件或目录的信号, 默认为false- 为了清理干净,你必须拨打提供
cleanupCallback函数.
- 为了清理干净,你必须拨打提供
unsafeCleanup:递归地去除所创建的临时目录,即使它不是空的. 默认为falsedetachDescriptor: 解析文件描述器, 调用者负责关闭文件, tmp 将不再尝试在垃圾收集过程中关闭文件discardDescriptor: 丢弃文件描述符( 关闭文件, fd 为 - 1) , tmp 在垃圾收集过程中将不再尝试关闭文件