2017-10-20 54 views
0

我在zip中有很多.json文件和一个.xml文件。我想在我做fs.createReadStream时首先查看XML文件,然后对列表进行排序。用fs.createReadStream排序列表

我现在在做什么

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

回答

0

您可以在返回(如unzip文档说明)当流“关闭”事件释放出来,解决了一个无极的函数把这个包,并在诺言解决方案会返回排序后的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 */ 
    }) 
})