我有一个zip文件(实际上是epub文件),我需要遍历其中的文件并在不将其解压到磁盘的情况下读取它们。
我尝试使用一个名为JSZip
的Node.js库,但每个文件的内容都存储在缓冲区中,并且每当我尝试将缓冲区内容解码为字符串时,返回的内容无法阅读。
这是我尝试过的代码:
const zip = new JSZip();
// read a zip file
fs.readFile(epubFile, function (err, data) {
if (err) throw err;
zip.loadAsync(data).then(function (zip) {
async.eachOf(zip.files, function (content, fileName, callback) {
if (fileName.match(/json/)) {
var buf = content._data.compressedContent;
console.log(fileName);
console.log((new Buffer(buf)).toString('utf-8'));
}
callback();
}, function (err) {
if (err) {
console.log(err);
}
});
});
});