我想扫描文件夹,但忽略其中包含的所有文件夹/目录。我在(C:/文件夹/)中的所有内容都是.txt文件和其他文件夹,我只想扫描txt文件,并忽略文件夹。
app.get('/generatE', function (req, res) {
const logsFolder = 'C:/folder/';
fs.readdir(logsFolder, (err, files) => {
if (err) {
res.send("[empty]");
return;
}
var lines = [];
files.forEach(function(filename) {
var logFileLines = fs.readFileSync (logsFolder + filename, 'ascii').toString().split("\n");
logFileLines.forEach(function(logFileLine) {
if(logFileLine.match(/.*AUDIT*./)) {
lines.push(logFileLine+'\n');
}
})
})
答案 0 :(得分:9)
使用Node 10.10+获取目录(即忽略子目录)中所有文件的正确方法
const fs = require('fs');
const dirents = fs.readdirSync(<DIRECTORY_PATH>, { withFileTypes: true });
const filesNames = dirents
.filter(dirent => !dirent.isDirectory())
.map(dirent => dirent.name);
// use filesNames
我们使用fs.readdirSync
方法,也使用dirent.isDirectory
方法
答案 1 :(得分:2)
请参阅diraria的答案,因为它更完整:只有当所有文件名都包含“.txt”扩展名时,我的回答才有效。
为什么不过滤掉以“.txt”结尾的文件?
var fs = require("fs")
fs.readdirSync("./").filter(function(file) {
if(file.indexOf(".txt")>-1)console.log(file)
})
我之前应该添加以获取这些文件的数组,您需要将它们返回到数组,如下所示。
var fs = require("fs")
let text_file_array = fs.readdirSync("./").filter(function(file) {
if(file.indexOf(".txt")>-1) return file;
})