簡體   English   中英

如何在node.js中的流中搜索字符串?

[英]How to search stream for string in node.js?

如何搜索流中的字符串然后打印? 我的意思是使用createReadStream 我想出了如何使用indexOfreadFile查找字符串,但是我正在閱讀使用流更有效。

更具體地說,我一直在嘗試在流中查找字符串,然后打印出包含該字符串的整行。 但是以下內容不斷給我錯誤

fs.createReadStream(process.argv[2], function (err, data) {
      data.indexOf ...

當前,我的程序打印出整個流,而不僅僅是打印包含字符串的行。

var http = require('http'); 
var fs = require('fs');

var server = http.createServer( function(req, res) {

console.log("Request received.");

res.writeHead(200, {"Content-Type": "text/plain"});
res.write("Hello World\n\n\n");

var s = fs.createReadStream(process.argv[2]).pipe(res); 

s.on('end', function(){ res.end() }) 


});
server.listen(8000);

流是經過緩沖的,因此傳遞給data事件(通常會監聽)的緩沖區不會以任何方式拆分或分隔在單獨的行上。

您可以使用readline模塊執行逐行搜索:

var fs        = require('fs');
var readline  = require('readline');

var server = http.createServer( function(req, res) {
  console.log("Request received.");

  res.writeHead(200, {"Content-Type": "text/plain"});
  res.write("Hello World\n\n\n");

  readline.createInterface({
    input     : fs.createReadStream(process.argv[2]),
    terminal  : false
  }).on('line', function(line) {
    var idx = line.indexOf(THE_SUBSTRING);
    if (idx !== -1) {
      res.write(line + '\n');
    }
  }).on('close', function() {
    res.end();
  });
});

編輯: readline res.write換行符,因此res.write一回去)

您可以使用此模塊搜索流中的字符串而無需緩沖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM