使用fs.createReadStream在列表中排序

时间:2017-10-20 08:06:05

标签: javascript node.js fs

我有很多.json文件和一个.xml的压缩文件。我想在fs.createReadStream首先查看XML文件时对列表进行排序。

我现在做什么

fs.createReadStream(savePathZip)
    .pipe(unzip.Parse())
    .on('entry', function(entry) {
}

1 个答案:

答案 0 :(得分:0)

你可以将它包装在一个函数中,该函数返回一个Promise,当它关闭'发出事件(如unzip文档中所述),并在promise解析中返回zip中的文件的最终列表,但是要对它们进行排序。一个例子可能是:

function getFileList(savePathZip) {
  return new Promise((resolve, reject) => {
    var list = []
    fs.createReadStream(savePathZip)
    .pipe(unzip.Parse())
    .on('entry', entry => list.push(entry.path))
    .on('error', reject)
    .on('close', () => resolve(list))
  })
}

然后你可以调用这个函数,它返回一个数组中文件的完整列表,然后按你喜欢的方式对它们进行排序:

getFileList(zipFilePath).then(fileArray => {
  fileArray = fileArray.sort((f1, f2) => {
    /* sort the list of files however you like */ 
  })
})