使用tar.gz npm模块提取tar.gz文件的问题

时间:2015-09-28 08:16:29

标签: node.js tar gz

我使用this包来递归解压缩给定的tar.gz文件并将它们移动到目的地。下面的计划

var targz = require("tar.gz");
var fs = require("fs");

var s = "/home/user/test.tar.gz";
var d = "/home/user/destination";
var parse;
var readStream;

function extractTar(source, destination) {
    targz().extract(source, destination).then(function() {
    console.log("extracted " + source);
    readStream = fs.createReadStream(source);
    parse = targz().createParseStream();

    readStream.pipe(parse);
    parse.on('entry', function(entry) {
      var stringpath = destination+entry.path;
      if ((entry.path.length > 6) && entry.path.substr(entry.path.length - 6) === "tar.gz") {
        console.log(stringpath, destination);
        extractTar(stringpath, destination);
      }
      else {
        var filenameStartsAt = stringpath.lastIndexOf("/");
        filename = stringpath.substr(filenameStartsAt+1);
        if (filename.length) {
          console.log("===="+filename);
          fs.rename(stringpath, destination+filename, function(err) {
            if (err) {
              console.log(err);
            }

          });
        }
      }
    });
  });
}

extractTar(s, d);

如果我的目录中已经存在名为“destination”的文件夹,则此工作正常。如果目标文件夹不存在,则会创建“目标”文件夹,但该文件夹不包含其中的所有解压缩文件。有时甚至没有一个文件。任何人都可以通过任何更好的方式告诉我在这方面做错了什么。

0 个答案:

没有答案