ファイルの途中に挿入 - Node.js

  • 作成日:
  • 最終更新日:2025/10/11

fs.readFile

memo.txt

1
2
3
4
5
6
7
8
9

script.js

fs.readFile('./memo.txt', 'utf8', function(err, data){
let lines = data.split("\r\n");
let txt = "";
let no = 5;
let msg = "hello";

lines.forEach((value, index, line) => {
    if(index + 1 == no){
        txt += value + "\n" + msg + "\n";
    } else if (index + 1 == line.length){
        txt += value;
    } else {
        txt += value + "\n";
    }
});

fs.writeFile("./memo.txt", txt, function(){});
});

// 実行結果
1
2
3
4
5
hello
6
7
8
9

readline

script.js

async function readfile(filename, no, msg){
const rs = fs.createReadStream('./memo.txt');
const rl = readline.createInterface({input: rs});

let index = 0;
let lines = [];
let txt = "";

for await (const line of rl) {
    if(index == no){
        lines.push(msg);
    }
    lines.push(line);
    index++
}

for(let i = 0; i < lines.length; i++){
    if(i == lines.length - 1){
        txt += lines[i];
    } else {
        txt += lines[i] + "\n";
    }
}

fs.writeFile(filename, txt, function(){});
}

const msg = "hello";
readfile('./memo.txt', 5, msg);

Promise

script.js

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

function readFileByLine(filePath, no, insert_value) {
  var lines = [];
  var stream = fs.createReadStream(filePath);
  var reader = readline.createInterface({ input: stream });

  return new Promise((resolve, reject) => {
reader.on('line', line => {
    lines.push(line);
});
reader.on('close', () => {
    resolve([lines, no, insert_value]);
});
  });
}

let no = 5;
let insert_value = "hoge";

readFileByLine('./memo.txt', no, insert_value).then((lines) => {
let len = lines[0].length;
let txt = "";

lines[0].forEach((value, index, data) => {
    if(index + 1 == lines[1]){
        txt += value + "\n" + lines[2] + "\n";
    } else if(index + 1 == len){
        txt += value;
    } else {
        txt += value + "\n";
    }
})
console.log(txt)
});