解压文件 node.js 时出现意外的文件结束错误

Pab*_*ino 4 javascript zlib fs node.js

我正在尝试使用 node.js 中的 Zlib 库解压缩文本文件,但在将 files\xe2\x80\x99s Readstream 内容传输到 Gunzip 对象时,出现意外的文件结束错误,这是我的代码片段:

\n\n
const fs = require(\'fs\');\nconst zlib = require("zlib");\n\nvar readable = fs.createReadStream(__dirname + \'/greet.txt\');\nvar readableGz = fs.createReadStream(__dirname + \'/greet.txt.gz\');\nvar writableGz = fs.createWriteStream(__dirname + \'/greet.txt.gz\');\nvar gZip = zlib.createGzip();\nvar gUnZip = zlib.createGunzip();\n\nreadable.pipe(gZip).pipe(writableGz);   // compress file\nreadableGz.pipe(gUnZip).on("error", function(e){    // uncompress file\n    console.log("error, " + e);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

greet.txt 中有一些随机文本,并且所有使用的文件都已在目录中创建,但是当到达最后一行时会触发错误事件

\n

v-a*_*rew 6

所有node操作都是异步的,因此您必须监听finish事件。

readable.pipe(gZip).pipe(writableGz)
   .on('finish', function () {  // finished
        console.log('Done. Now you can start reading.'); 
});
Run Code Online (Sandbox Code Playgroud)

这是一个工作代码:

const fs = require('fs');
const zlib = require("zlib");

var readable = fs.createReadStream('./greet.txt');
var writableGz = fs.createWriteStream('./greet.txt.gz');
var gZip = zlib.createGzip();
var gUnZip = zlib.createGunzip();

readable
    .pipe(gZip)
    .pipe(writableGz)
    .on('finish', function () {  // finished
        console.log('Done. Now you can start reading.');
        var readableGz = fs.createReadStream('./greet.txt.gz');
        readableGz
            .pipe(gUnZip)  // extract file
            .on("error", function (e) {
                console.log("error, " + e); 
            });
});

Run Code Online (Sandbox Code Playgroud)