2013-09-24 47 views
18

在節點應用程序中,我需要獲取除隱藏文件之外的目錄中的所有文件。 我試過fs.readdir,但它也顯示隱藏文件。如何在fs.readdir中隱藏文件結果

+1

的可能重複[的NodeJS - 檢查隱藏文件(http://stackoverflow.com/questions/8905680/nodejs-check-for-hidden-files) –

+1

你可以(或必須我會說)通過文件循環來過濾掉「隱藏」文件。檢查上面的鏈接。 – leesei

回答

2

您可以使用:

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

使用正則表達式從this答案,這個簡單的解決方案,從結果中刪除所有隱藏文件:

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

    // Your code 
}); 
0

我用junk包忽略隱藏文件。

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

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

垃圾不會過濾所有隱藏的文件。 > ['過濾出像.DS_Store和Thumbs.db'這樣的系統垃圾文件](https://www.npmjs.com/package/junk) – 1252748

+0

@ 1252748是的。你可以定義正則表達式來隱藏你不需要的東西。 – Meteor

+0

那麼爲什麼要使用垃圾模塊呢?只需過濾'/^\./'。沒有理由使用不按照你想要的方式過濾結果的模塊,就像你可以從'readdir'過濾結果一樣。 – 1252748