2017-01-03 6 views
1

これはエクスプレスサーバを実行しているノードアプリケーションです。私はそれにテキストファイルを持つフォルダを持っています。私はフォルダ内のそれらのファイルのそれぞれに入ることができ、単語 "SAVE"を含む行を抽出する必要があります。fs.readdirとfs.readfileとregex

私はこの段階で止まっています。

app.get('/logJson', function (req, res) { 
    const logsFolder = 'C:/logs/'; 
    fs.readdir(logsFolder, (err, files) => { 
    if (err) { 
     res.send("[empty]"); 
     return; 
    } 
    files.forEach(function(filename){ 
     var logFiles = fs.readFileSync (logsFolder + filename, 'ascii').toString().split("\n"); 
     console.log(logFiles + "\n"); 
    }) 
    }) 
}) 

私はこれを含まないところ私は理解することはできません。

var log = (logFiles.split(/.*SAVE.*/g)||['no result found'])[0]; 

をすべてのヘルプは

答えて

0

をいただければ幸いあなただけの単語SAVEを含むすべての行を印刷したい場合は、あなたが行うことができますそれはこれが好きです。

備考:このコードを実行しませんでした。

app.get('/logJson', function (req, res) { 
    const logsFolder = 'C:/logs/'; 
    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"); 

     // go through the list of logFileLines 
     logFileLines.forEach(function(logFileLine) { 

     // if the current line matches SAVE, it will be stored in the variable lines 
     if(logFileLine.match(/SAVE/)) { 
      lines.push(logFileLine); 
     } 
     }) 
    }) 

    // the variable lines is printed to the console 
    console.log(lines); 
    }) 
}) 
+0

現在の出力をさらに解析する必要がある場合、パーズコードはどこに置く必要がありますか? – Tony

+0

@トニーそれは、あなたは何をする必要がありますか? –

+0

私はそれを理解しました。今、私のフォルダに他のフォルダがあると、別の問題があります。私のコードが壊れてしまい、 'fs.js:603 var r = binding.read(fd、buffer、offset、length、position); エラー:EISDIR:ディレクトリで不正な操作です。Object.fs.readFileSync(fs.js:438:24)の をエラー(ネイティブ) (Objects.fs.readSync(fs.js:603:19) ) (C:¥Users¥admin¥Desktop¥folder¥server.js)1 6:30 、Array.forEach(ネイティブ) (C:¥Users¥admin¥Desktop¥folder¥server.js):1 5 :12 at FSReqWrap.oncomplete(fs.js:82:15) C:¥Users¥admin¥Desktop¥folder> – Tony