0
請考慮下面的代碼。我想要做的是從names.txt
中選取createStream
函數中的名字,然後從012那裏撥打FileSearch
函數nameToSearch
作爲參數,並逐行搜索list.txt
。因此,一個名稱和搜索一行list.txt
線,另一名由線等搜索list.txt
線...用readline node.js搜索文本文件
list.txt
,是一個大文件。如果找到匹配項,輸出搜索字符串和行號。我以爲它會把一個名字和行號,然後轉移到第二個名字等等,但它是
跳過行。我手動搜索了一些名稱,並且輸出中沒有相應的行號)
混合名稱。我可以在輸出的初始部分看到名字,然後在輸出的其他地方看到名字。
代碼:
var fs = require('fs')
var readline = require('readline');
var nameToSearch
var createStream = function(){
var lineNumber=0;
var ended = false;
var rlName = readline.createInterface({
input : fs.createReadStream('./names.txt'),
output: process.stdout,
terminal: false
})
rlName.on('line',function(lineInNameFile){
++lineNumber;
nameToSearch=lowercase(lineInNameFile);
FileSearch(nameToSearch);
})
}
var lowercase=function(str){
return String(str).toLowerCase();
}
var FileSearch = function (searchString){
var listlineNumber=0;
var rlList = readline.createInterface({
input : fs.createReadStream('./list-2.txt'),
output: process.stdout,
terminal: false
})
rlList.on('line',function(lineInListFile){
++listlineNumber;
if (lineInListFile===searchString){
console.log(searchString+ ":" + listlineNumber);
}
})
}
var runSearch = createStream();
exports.createStream = createStream;
names.txt
看起來像這樣
OLIVER
CHARLOTTE
LIAM
AMELIA
.
.
和list.txt
看起來是這樣,基本上在兩個文件中每行一個字
a
aah
aahed
aahing
aback
abacus
abacuses
abaft
abalone
abalones
.
.
我的OU t把控制檯是這樣的事情是這樣的
grayson:2322
emmett:3756
emmett:6399
lily:3739
lily:6340
.
.
我不正確使用readline
模塊?
編輯:查看更多和搜索發現它可能不得不做一些事情,閱讀最後一行。它沒有閱讀list.txt
的最後一行。我不知道爲什麼
只是想驗證你正在期待'list-2.txt'而不是'list.txt'如下所示:'input:fs.createReadStream('./ list-2.txt '),' – Nijikokun
'list-2.txt'是一個錯字,問題依然存在。但我已經設法解決它。我會發布答案。謝謝 – user1207289