2017-10-20 4 views
0

J'ai beaucoup de fichiers .json et un fichier .xml dans un fichier zip. Je veux trier la liste quand je fais fs.createReadStream pour voir le fichier XML en premier.Tri dans une liste avec fs.createReadStream

Ce que je fais maintenant

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

Répondre

0

Vous pouvez envelopper cela dans une fonction qui renvoie une promesse qui est résolu lorsque le flux « proche » événement est émis (comme indiqué dans les unzip docs), et dans le la résolution de la promesse retourne une liste finale des fichiers dans le fichier zip triés par quelque que vous voulez les trier. Un exemple pourrait être:

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)) 
    }) 
} 

Ensuite, vous pouvez appeler la fonction, qui retourne une liste complète des fichiers dans un tableau et les trier comme bon vous semble:

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