放气

时间:2017-04-04 13:55:06

标签: node.js gunzip

我试图缩小在macOS上本地创建的gzip存档,如:

$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ tar -cvzf test.gz test.txt

然后在节点I打开输入读取流,管道gunzip并写回输出流,如:

$ node
> fs=require('fs'),gunzip = zlib.createGunzip();
> fs.createReadStream( './test.gz'  ).pipe(gunzip).pipe(fs.createWriteStream('./out.txt'))

我得到的是一个包含错误标题的损坏文件(实际上是tar标题 - 请参阅响应),即:

]$ cat out.txt 
out.txt000644 000765 000024 00000024000 13070721621 014300 0ustar00loretoparisistaff000000 000000 out.txt000644 000765 000024 00000000036 13070720161 014301 0ustar00loretoparisistaff000000 000000 TEST
TEST
TEST
TEST
TEST
TEST

注意: 我明确省略了closeerror事件,在这种情况下它将是:

> fs.createReadStream( './test.gz'  ).pipe(gunzip).pipe(fs.createWriteStream('./out.txt')).on('close', () => { console.log('done'); }).on('error', (error) => { console.error(error) });

但这不会影响此问题。

1 个答案:

答案 0 :(得分:1)

这不是一个糟糕的标题,那是一个tar header。这是因为你实际上是在创建一个gzip压缩文件。

如果您只想压缩test.txt,请使用:

gzip < test.txt > test.gz