gpt4 book ai didi

Node : Specify files to unzip with zlib + tar

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:36 25 4
gpt4 key购买 nike

安装过程是下载 .tar.gz 存档,然后将文件解压缩到目标目录。但是,并非存档中的所有文件都是必需的,我想指定应提取哪些文件。天真的方法是在提取后删除不需要的文件,但我想要一种“更干净”的方法并过滤掉。

这可能吗?

我目前拥有的(相关)代码是(为了便于阅读而删除)

var fs = require('fs');
var tar = require('tar');
var zlib = require('zlib');

var log = console.log;

var tarball = 'path/to/downloaded/archive.tar.gz';
var dest = 'path/to/destination';

fs.createReadStream(tarball)
.on("error", log)
.pipe(zlib.Unzip())
.pipe(tar.Extract({ path: dest }))
.on("end", log);

谢谢。

最佳答案

它的工作原理类似于 unzip模块:

var fs = require('fs');
var tar = require('tar');
var zlib = require('zlib');
var path = require('path');
var mkdirp = require('mkdirp'); // used to create directory tree

var log = console.log;

var tarball = 'path/to/downloaded/archive.tar.gz';
var dest = 'path/to/destination';

fs.createReadStream(tarball)
.on('error', log)
.pipe(zlib.Unzip())
.pipe(tar.Parse())
.on('entry', function(entry) {
if (/\.js$/.test(entry.path)) { // only extract JS files, for instance
var isDir = 'Directory' === entry.type;
var fullpath = path.join(dest, entry.path);
var directory = isDir ? fullpath : path.dirname(fullpath);

mkdirp(directory, function(err) {
if (err) throw err;
if (! isDir) { // should really make this an `if (isFile)` check...
entry.pipe(fs.createWriteStream(fullpath));
}
});
}
});

关于 Node : Specify files to unzip with zlib + tar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com