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)
});