节点解压缩。如何命名文件

时间:2018-10-15 03:26:56

标签: javascript node.js unzip

使用NPM的unzip module

转换时,转换后的文件名为doc.xml,因为未压缩的xml文件。

不想使用doc这个名字,

'use strict';

var fs = require('fs')
var unzip = require('unzip')

convert(process.argv[2], process.argv[3])

function convert(path, fileName) {
    fs.createReadStream(path)
        .pipe(unzip.Extract({ path: '/users/*****/desktop/templatexml/' + fileName + '.xml' }))
}

然后运行:

node /Users/*****/Desktop/converter/converter.js /Users/******/Desktop/template/103.zip 103

但是结果将始终为"fileName.xml/doc.xml"

"fileName.xml"显示为目录名称。

想要更改doc部分。

如果可能,希望从原始文件路径获取文件名。

内部process.argv [2]就像

"/Users/*****/Desktop/template/fileName.zip"

想从这里获取文件名。


谢谢您的评论,像这样。 但是没用。

'use strict';

var fs = require('fs')
var unzip = require('unzip')

convert(process.argv[2])

function convert(path) {
    fs.createReadStream(path)
        .pipe(unzip.Parse())
        .on('entry', function(entry) {
            var fileName = entry.path;
            var type = entry.type; // 'Directory' or 'File'
            var size = entry.size;
            if (fileName === "this IS the file I'm looking for") {
                entry.pipe(fs.createWriteStream('/users/*****/desktop/templatexml/'));
            } else {
                entry.autodrain();
            }
        });
}

1 个答案:

答案 0 :(得分:1)

fs.createReadStream('path/to/archive.zip')
  .pipe(unzip.Parse())
  .on('entry', function (entry) {
    var fileName = entry.path;
    var type = entry.type; // 'Directory' or 'File'
    var size = entry.size;
    if (fileName === "this IS the file I'm looking for") {
      entry.pipe(fs.createWriteStream('output/path'));
    } else {
      entry.autodrain();
    }
  });