放气时节点 GUnzip header 不匹配
Node GUnzip header mismatch when deflating
我正在尝试压缩在 macOS 上本地创建的 gzip 存档,例如:
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ tar -cvzf test.gz test.txt
然后在节点中我打开一个输入读取流,通过管道传输 gunzip 并写回输出流,如:
$ node
> fs=require('fs'),gunzip = zlib.createGunzip();
> fs.createReadStream( './test.gz' ).pipe(gunzip).pipe(fs.createWriteStream('./out.txt'))
我得到的是一个损坏的文件,它有一个错误的 header(实际上是 tar header - 请参阅回复),即:
]$ 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
注意:
我明确省略了 close
和 error
事件,在这种情况下它将是:
> fs.createReadStream( './test.gz' ).pipe(gunzip).pipe(fs.createWriteStream('./out.txt')).on('close', () => { console.log('done'); }).on('error', (error) => { console.error(error) });
但这不影响这个问题。
这还不错 header,那是 tar header。之所以存在,是因为您实际上是在创建压缩的 tar 文件。
如果您只想压缩 test.txt
,请使用:
gzip < test.txt > test.gz
我正在尝试压缩在 macOS 上本地创建的 gzip 存档,例如:
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ echo "TEST" >> test.txt
$ tar -cvzf test.gz test.txt
然后在节点中我打开一个输入读取流,通过管道传输 gunzip 并写回输出流,如:
$ node
> fs=require('fs'),gunzip = zlib.createGunzip();
> fs.createReadStream( './test.gz' ).pipe(gunzip).pipe(fs.createWriteStream('./out.txt'))
我得到的是一个损坏的文件,它有一个错误的 header(实际上是 tar header - 请参阅回复),即:
]$ 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
注意:
我明确省略了 close
和 error
事件,在这种情况下它将是:
> fs.createReadStream( './test.gz' ).pipe(gunzip).pipe(fs.createWriteStream('./out.txt')).on('close', () => { console.log('done'); }).on('error', (error) => { console.error(error) });
但这不影响这个问题。
这还不错 header,那是 tar header。之所以存在,是因为您实际上是在创建压缩的 tar 文件。
如果您只想压缩 test.txt
,请使用:
gzip < test.txt > test.gz