在Node.js中,如何读取文件,在指定行追加字符串或从某行删除字符串?

时间:2014-04-12 22:31:06

标签: node.js

我需要打开一个现有的JavaScript文件,检查这个字符串是否存在:

var LocalStrategy = require('passport-local').Strategy;

如果没有,则将其附加到顶部,其余为require()行。

在另一种情况下,我需要检查该字符串是否存在,如果存在,我想删除该行。

我查看了fs.readFilefs.writeFilefs.open,但我认为它无法满足我的需求。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

这是一个简化的脚本:

var fs = require('fs');

var search = "var LocalStrategy = require('passport-local').Strategy;";


function append (line) { 
  line = line || 0;

  var body = fs.readFileSync('example.js').toString();

  if (body.indexOf(search) < 0 ) {

    body = body.split('\n');
    body.splice(line + 1,0,search);
    body = body.filter(function(str){ return str; }); // remove empty lines
    var output = body.join('\n');
    fs.writeFileSync('example.js', output);
  }
}


function remove () {

  var body = fs.readFileSync('example.js').toString();
  var idx = body.indexOf(search);

  if (idx >= 0 ) {
    var output = body.substr(0, idx) + body.substr(idx + search.length);
    fs.writeFileSync('example.js', output);
  }

}