使用node.js zlib将压缩文件stream式传输到variables中
我试图将一个本地zip
文件解压缩到node.js中的一个variables,如:
var d; var fs = require('fs'); var zlib = require('zlib'); var zipPath='../../data/lemma/lemmatization-en.zip'; var zipExists=fs.existsSync(zipPath); console.log(zipPath,zipExists); fs.createReadStream(zipPath) .on('data', function (data){ d+=data.toString(); }) .on('end', function (){ console.log("read",d.length); zlib.inflate(d, {},function(err, buf) { console.error(err) console.log("unzip",buf.toString()); }) })
该文件在这里 ,它是一个普通的zip文件。 当我运行这个我得到一个Error: incorrect header check
错误。 尝试使用pipe道时出现同样的错误:
fs.createReadStream(zipPath) .pipe( zlib.createUnzip() ) .on('data', function (data){ d+=data.toString(); }) .on('end', function (){ console.log("read",d.length); })
我知道npm
上有非本地模块,但我想保持简单,只使用zlib
本地模块。 我的目标是读取stream,并加载一次到内存中,因为这个文件必须延迟加载到代码中。