NodeJs操作file常用方法:
var fs = require('fs'); //写入文件 fs.writeFile("test.txt", "hello world! maxinhai is good coder!", function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); //向文件追加内容 fs.appendFile("test.txt", "人间失格", 'utf-8', function(err) { if(err) { console.log(err); return false; } console.log('写入成功!!!'); }); //读取文件 fs.readFile("test.txt", function(err, data) { if(err) { console.log(err); return false; } console.log(data.toString()); }); //unlink删除文件 fs.unlink('test.txt',function(err) { if(err){ console.log(err); return false; } console.log('删除文件成功'); }); //判断文件/目录是否存在 fs.access('test.txt',(err)=>{ console.log(err ? '目录/文件不存在': '文件存在,可以进行读写'); });
修改文件指定内容:
编写这段代码的背景是我要定时同步数据,需要记录上次同步数据到那个时间点了,所以文件里只存了时间;
//获取时间 function getDateTime() { var date = new Date(); var year = date.getFullYear(); var month = date.getMonth()+1; var day = date.getDate(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); var dateTime = year+'年'+month+'月'+day+'日 '+hour+':'+minute+':'+second; return dateTime; } //修改文件内容 let dateTime = getDateTime(); let date = `${dateTime}`; console.log('startTime', date); //1.先写入时间 fs.writeFile('date.txt', date, (err) => { if (err) throw err; console.log('写入时间',dateTime); }); function changeDateTime() { //2.再修改时间 dateTime = getDateTime(); date = `${dateTime}` fs.writeFile('date.txt', date, (err) => { if (err) throw err; console.log('圆满解决颜色替换', dateTime); }); //读取文件 fs.readFile("date.txt", function(err, data) { if(err) { console.log(err); return false; } console.log('修改后时间',data.toString()); }); } //模拟隔一段时间再去写入 setTimeout(changeDateTime, 1500);
上面代码并不能达到修改指定内容的功能,请看下面:
//修改文件内容 let dateTime = getDateTime(); let date = `{date:${dateTime}, msg:hello world}`; console.log('startTime', date); //1.先写入时间 fs.writeFile('date.txt', date, (err) => { if (err) throw err; console.log('写入时间',dateTime); }); function changeDateTime() { //2.再修改时间 dateTime = getDateTime(); date = `{date:${dateTime}, msg:hello javaScript}` fs.writeFile('date.txt', date, (err) => { if (err) throw err; console.log('圆满解决颜色替换', dateTime); }); //读取文件 fs.readFile("date.txt", function(err, data) { if(err) { console.log(err); return false; } console.log('修改后时间',data.toString()); }); } //模拟隔一段时间再去写入 setTimeout(changeDateTime, 1500);
这种方式无疑是很有局限性的,修改时想要保证文件内容不丢失,创建对象时必须填写全部数据,比较适合文件内容比较小的情况;