フォルダをスキャンしたいのですが、そこに含まれているすべてのフォルダ/ディレクトリを無視します。 (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
});
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;
})