Заменить конкретное содержимое файла в nodejs - PullRequest
0 голосов
/ 28 мая 2019

Я хочу заменить определенную строку, используя JavaScript, новым контентом. Это содержимое файла,

SERVER=1055@localhost

GROUP_SERVERS=2325@localhost

LINE_IAM_INTERESTED=KTYUIERVW:2800

FILE_PATH="C:\Program Files\somefile\Shared Files\"

В этой строке LINE_IAM_INTERESTED=KTYUIERVW:2800. Я хочу заменить KTYUIERVW на KJHTERDY и 2800 на 78945

Я показал, что я пытался с помощью fs appendfilesync


fs.appendFileSync('file_name').toString().split('\n').forEach(function(line){
    app.console.log("called append");
    var sEntry = line.split("=");
    if (sEntry.length == 2) {
      if (sEntry[0] == "LINE_IAM_INTERESTED") {
      app.console.log("found one!!!!");
      }
    }
  });

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

appendFile и appendFileSync используются для добавления в конец файла.Хотя вы можете сделать это в виде одной строки, как показано в другом ответе, я сохранил структуру вашего кода.Здесь вы хотите прочитать данные, изменить их, а затем переписать.Используя имеющийся у вас блок кода, вы можете изменить его, чтобы использовать readFileSync и writeFileSync.

let newData = fs.readFileSync('file_name', 'utf-8').split('\n').map(line => {
  let sEntry = line.split('=')
  if (sEntry.length == 2) {
    if (sEntry[0] == "LINE_IAM_INTERESTED") {
      console.log("found one!!!!");
      return sEntry[0] + '=' + 'KJHTERDY:78945'
    }
  }
  return line
}).join('\n')

fs.writeFileSync('file_name', newData)

Я поменял forEach на map, что позволяет нам изменять данные массивавернув желаемое значение.Новый массив затем объединяется и записывается обратно в файл.

0 голосов
/ 28 мая 2019

вы можете попробовать ПРОЧИТАТЬ -> ЗАМЕНИТЬ -> ЗАПИСАТЬ поток:

fs.writeFileSync('file_name', fs.readFileSync('file_name').replace('KTYUIERVW:2800', 'KJHTERDY:78945'))
...