node.js实现解压tgz文件
时间: 2023-07-07 10:27:04 浏览: 287
可以使用Node.js内置的zlib模块和tar模块来实现解压tgz文件。
以下是示例代码:
```javascript
const fs = require('fs');
const zlib = require('zlib');
const tar = require('tar');
const inputFile = 'example.tgz';
const outputDir = 'output';
// 创建输出目录
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir);
}
// 创建可读流
const readStream = fs.createReadStream(inputFile);
// 创建解压流
const unzipStream = zlib.createGunzip();
// 创建解压后的目录流
const untarStream = tar.extract({
cwd: outputDir,
});
// 将流连接在一起
readStream.pipe(unzipStream).pipe(untarStream);
// 监听流完成事件
untarStream.on('finish', () => {
console.log('解压完成!');
});
```
这段代码会将名为`example.tgz`的文件解压到名为`output`的目录中。你可以根据实际情况修改输入输出文件路径和目录名。
相关问题
Nodejs下载并解压tgz文件
可以使用Node.js的`https`模块下载tgz文件,然后使用上一题中的方法解压tgz文件。
以下是示例代码:
```javascript
const https = require('https');
const fs = require('fs');
const zlib = require('zlib');
const tar = require('tar');
const url = 'https://example.com/example.tgz';
const outputDir = 'output';
// 创建输出目录
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir);
}
// 下载tgz文件
https.get(url, (response) => {
// 创建可写流
const writeStream = fs.createWriteStream('example.tgz');
// 将响应管道连接到可写流
response.pipe(writeStream);
// 监听下载完成事件
writeStream.on('finish', () => {
console.log('下载完成!');
// 创建可读流
const readStream = fs.createReadStream('example.tgz');
// 创建解压流
const unzipStream = zlib.createGunzip();
// 创建解压后的目录流
const untarStream = tar.extract({
cwd: outputDir,
});
// 将流连接在一起
readStream.pipe(unzipStream).pipe(untarStream);
// 监听流完成事件
untarStream.on('finish', () => {
console.log('解压完成!');
});
});
});
```
这段代码会从`https://example.com/example.tgz`下载tgz文件,然后解压到名为`output`的目录中。你可以根据实际情况修改下载地址和输出目录。
阅读全文