【发布时间】:2021-12-15 00:14:47
【问题描述】:
在节点应用程序中,我需要获取目录中除隐藏文件之外的所有文件。 我试过 fs.readdir 但它也显示隐藏文件。
【问题讨论】:
-
您可以(或者我不得不说)遍历文件以过滤掉“隐藏”文件。检查上面的链接。
-
fs.readdir应该有一个排除隐藏文件的原生选项。
标签: node.js
在节点应用程序中,我需要获取目录中除隐藏文件之外的所有文件。 我试过 fs.readdir 但它也显示隐藏文件。
【问题讨论】:
fs.readdir 应该有一个排除隐藏文件的原生选项。
标签: node.js
使用来自this 答案的正则表达式,这个简单的解决方案会从结果中删除所有隐藏文件:
fs.readdir('/path/to/directory', (err, list) => {
list = list.filter(item => !(/(^|\/)\.[^\/\.]/g).test(item));
// Your code
});
【讨论】:
你可以使用:
fs.readdir('/path/to/directory', function(err, list) {
list.forEach(function (filename) {
if(! /^\..*/.test(filename)) {
// display files
}
});
});
【讨论】:
承诺方式
const fs = require('fs').promises;
const readdir = path => {
return fs
.readdir(path)
.then(list => list.filter(item => !/(^|\/)\.[^/.]/g.test(item)));
};
【讨论】:
我使用junk 包来忽略隐藏文件。
var fs = require('fs');
var junk = require('junk');
fs.readdir('path', function (err, files) {
console.log(files.filter(junk.not));
});
【讨论】:
Filter out system junk files like .DS_Store and Thumbs.db
/^\./。没有理由使用一个不做你想做的事情的模块,就像你可以过滤来自 readdir 的结果一样过滤它的结果。