Мне нужно проанализировать файл по строкам в следующем формате с помощью Node.js:
13
13
0 5
4 3
0 1
9 12
6 4
5 4
0 2
11 12
9 10
0 6
7 8
9 11
5 3
Он представляет собой график. Первые две строки - это количество ребер и вершин, за которыми следуют ребра.
Я могу выполнить задачу с чем-то вроде:
var fs = require('fs');
var readline = require('readline');
var read_stream = fs.createReadStream(filename);
var rl = readline.createInterface({
input: read_stream
});
var c = 0;
var vertexes_number;
var edges_number;
var edges = [];
rl.on('line', function(line){
if (c==0) {
vertexes_number = parseInt(line);
} else if (c==1) {
edges_number = parseInt(line);
} else {
edges.push(line.split(' '));
}
c++;
})
.on('end', function(){
rl.close();
})
Я понимаю, что такие вещи могут быть не такими, о чем думали Node.js, но каскадный if
в обратном вызове line
на самом деле не выглядит элегантно/удобочитаемым.
Есть ли способ читать синхронные строки из потока, как на любом другом языке программирования?
Я открыт для использования плагинов, если нет встроенного решения.
[EDIT]
Извините, я должен был уточнить, что я хотел бы избежать загрузки всего файла в память заранее