Node.js:在文本文件中的特定行之后插入一行?

时间:2013-09-05 05:52:30

标签: javascript node.js

我正在尝试构建命令行应用程序,以便阻止ip(或其他)我不需要更新conf文件。为此,我需要在conf文件中的特定位置插入一行特定的代码。我知道CLI部分。任何人都可以帮我插入部件吗? 我写了如下代码,但是写了一些胡言乱语!

#!/usr/bin/env node
var cli = require('cli');
var fs = require('fs');
cli.parse({
    block:   ['b', 'Block the ip:port'],
    ip: ['i', 'provide ip address', 'string', ''],
    port: ['p', 'provide port number', 'int', 0],
});

cli.main(function(args, options)
{
    if(options.block)
    {
       fs.readFile('nginx.conf', function(err, data) {
          if(err) throw err;
          data = data.toString();
          var array = data.toString().split("\r\n");

          array[4] ='deny ' + cli.getValue(options.ip) + ':' + cli.getValue(options.port);
          for(i = 0; i < array.length ; i++) {
            fs.writeFile('nginx1.conf', array[i]+'\r\n', function () {})
          };
       });
    }
});

1 个答案:

答案 0 :(得分:0)

for循环中的回调不是一个好主意。试试这段代码 -

fs.readFile('nginx.conf', function(err, data) {
  if(err) throw err;
  //data = data.toString();
  var array = data.toString().split("\n");

  array[4] ='deny '+cli.getValue(options.ip)+':'+cli.getValue(options.port);
  for(i=0;i<array.length;i++) {
    fs.appendFileSync('nginx1.conf', array[i]+'\n');
  }
});