作为一种临时方法,我使用.txt文件存储程序的某些变量。编写与fs.appendFile完美匹配,但考虑到它的大小,使用fs.readFile进行读取是不合适的-我想从文件中获取特定行,并且告诉npm line-by-line可能会有所帮助。

不过,我对此有点迷惑。这是我称之为的功能:

function YTAPP_LBL_SetValueToLine(path, lineid, value){

    var lr = new lblreader(path);
    var m = 0;

    lr.on('line', function (line) {
        // 'line' contains the current line without the trailing newline character.
        m=+1;
        if(m==lineid){ value = line; };
    });

};


并且调用本身作为常规函数调用发生,所有输入变量肯定正确。

我应该以为这不是一个适当的方法,但是文档说,这是同步方法。但是,由于它需要输入功能,因此我可以看到.on的工作是asysnc。

不确定是否与问题有关,但是无论如何,函数调用后的console.log始终表示变量未更改。

我该怎么做?

最佳答案

您可以使用核心节点API提供的Readline模块。


  Readline API示例(逐行)

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

const rl = readline.createInterface({
  input: fs.createReadStream('sample.txt')
});

rl.on('line', (line) => {
  console.log('Line from file:', line);
});



上面的示例取自Node Readline API Docs

10-08 07:41
查看更多