我想扫描文件夹,但忽略其中包含的所有文件夹/目录。我在(C:/folder/)中只有.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');
}
})
})
最佳答案
使用fs.readdir
或 fs.readdirSync
带有选项 { withFileTypes: true }
的方法,然后使用 dirent.isFile
进行过滤(需要 Node 10.10+)。
同步版本
const fs = require('fs');
const dirents = fs.readdirSync(DIRECTORY_PATH, { withFileTypes: true });
const filesNames = dirents
.filter(dirent => dirent.isFile())
.map(dirent => dirent.name);
// use filesNames
异步版本(带有async
/await
,需要Node 11+)
import { promises as fs } from 'fs';
async function listFiles(directory) {
const dirents = await fs.readdir(directory, { withFileTypes: true });
return dirents
.filter(dirent => dirent.isFile())
.map(dirent => dirent.name);
}
异步版本(带回调)
const fs = require('fs');
fs.readdir(DIRECTORY_PATH, { withFileTypes: true }, (err, dirents) => {
const filesNames = dirents
.filter(dirent => dirent.isFile())
.map(dirent => dirent.name);
// use filesNames
});
关于javascript - fs.readdir 忽略目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472161/