想知道如何使用Node JS提取tbz文件并保存到磁盘。示例代码将非常感激。
尝试过这样的事情:
var zlib = require('zlib');
var fs = require('fs');
var file = fs.createReadStream('/tmp.tbz');
var zip = file.pipe(zlib.createUnzip());
zip.on("data", function(data) {
console.log(data);
});
zip.on("error",function(error){
console.log(error);
});
但结束时:
{ [Error: incorrect header check] errno: -3, code: 'Z_DATA_ERROR' }
不确定我是否正确做到了。
答案 0 :(得分:1)
没有设法找到用于提取tbz文件的节点库,因为我使用zlib,node-tar等进行测试。最终使用'tar'命令来解决这个问题。
var util = require('util'),
spawn = require('child_process').spawn,
ls = spawn('tar', ['-C','/home/tony/Desktop','-xvf', '/home/tony/Desktop/tmp.tbz']);
ls.stdout.on('data', function (data) {
console.log(data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
我暂时接受我的回答,直到更好的回答。
答案 1 :(得分:0)
似乎.tbz
是bzip2,因此可以使用以下模块:https://www.npmjs.com/package/unbzip2-stream
提取数据。
我能够像这样提取.tbz
文件:
fs.createReadStream(sourceFileName)
.pipe(bz2())
.pipe(fs.createWriteStream(destinationFileName))