Относительно новый с Node.Пытаюсь работать с потоками.
Я хочу прочитать и отсортировать большой файл, содержащий цифры (разделенные новой строкой).Я отсортировал файл в соответствии с методом здесь (метод № 5, на самом деле указан в этом потоке), и пытаюсь настроить его так, чтобы он возвращал первые X строк из отсортированногоданные (var request = 5
в коде ниже только для тестирования).Я хотел бы показать это до записи данных.
var fs = require('fs'),
util = require('util'),
spawn = require('child_process').spawn,
sort = spawn('sort', ['-nr','../data/data.txt']),
writer = fs.createWriteStream('output.txt');
var start = Date.now();
var output = 'output.txt';
var request = 5;
var lineCount = 0;
var numbers;
var selection = [];
sort.stdout.on('data', function(data) {
lineCount ++
numbers = data.toString()
// data.toString()
.split('\n')
.sort((a, b) => b-a)
selection = numbers.slice(0, request)
//
// .forEach(record => writer.write(record + '\n'))
},
)
sort.on('exit', function(code) {
if (code) {
// handle error
console.log(code);
}
// writer.end()
// console.log(lineCount);
let array = numbers.slice(0, request);
console.log(selection);
var closetime = Date.now();
console.log('Time. ', (closetime -start) /1000, ' secs');
});
sort.stderr.on('data', function(data) {
// handle error...
console.log('stderr: ' + data);
});
Я не могу заставить его работать независимо от того, помещаю ли я свой код в раздел .on('data'
или в раздел .on('exit'
.Любые предложения?
Я упомянул здесь большое количество потоков о переполнении стека, включая этот , этот , этот при чтении определенногострока через nodejs , читает первые две строки через Nodejs .
Последнее звучит так, как будто оно должно быть тем, что мне нужно, но я не могу заставить его работать в моем коде.