0

Node.js 相对较新。尝试使用流。

我正在寻找一个包含数字(换行符分隔)的大文件并对其进行排序。我已经按照这里的方法(方法#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'。有什么建议么?

我确实在 Stack Overflow 上引用了大量线程,包括这个这个这个关于通过 nodejs 读取特定行,通过 Nodejs读取前两行的线程

最后一个听起来应该是我需要的,但我无法让它在我的代码中工作。

4

0 回答 0