2013-09-24 13 views
18

W aplikacji węzła muszę uzyskać wszystkie pliki w katalogu oprócz tych ukrytych. Próbowałem fs.readdir, ale wyświetla również ukryte pliki.Jak ukryć ukryte pliki w wyniku fs.readdir

+1

możliwe duplikat [Nodejs - Sprawdź ukrytych plików] (http://stackoverflow.com/questions/8905680/nodejs-check-for-hidden-files) –

+1

Można (lub muszą Powiedziałbym) zapętla pliki, aby odfiltrować "ukryty" plik. Sprawdź powyższy link. – leesei

Odpowiedz

2

Można użyć:

fs.readdir('/path/to/directory', function(err, list) { 
    list.forEach(function (filename) { 
    if(! /^\..*/.test(filename)) { 
     // display files 
    } 
    }); 
}); 
6

Korzystanie regex z this odpowiedź, to proste rozwiązanie usuwa wszystkie ukryte pliki z wyniku:

fs.readdir('/path/to/directory', (err, list) => { 
    list = list.filter(item => !(/(^|\/)\.[^\/\.]/g).test(item)); 

    // Your code 
}); 
0

używam junk pakiet ignorować ukryte pliki.

var fs = require('fs'); 
var junk = require('junk'); 

fs.readdir('path', function (err, files) { 
    console.log(files.filter(junk.not)); 
}); 
+0

śmieci nie filtruje wszystkich ukrytych plików. > ["Odfiltruj niepotrzebne pliki systemowe, takie jak .DS_Store i Thumbs.db"] (https://www.npmjs.com/package/junk) – 1252748

+0

@ 1252748 Tak. Możesz zdefiniować wyrażenie regularne, aby ukryć to, czego nie potrzebujesz. – Meteor

+0

Dlaczego więc w ogóle korzystać z modułu śmieciowego? Po prostu filtruj na '/^\./'. Nie ma powodu, aby używać modułu, który nie robi tego, co chcesz, tylko filtrować jego wyniki w dokładnie taki sam sposób, w jaki można filtrować wyniki z 'readdir'. – 1252748