NodeJs操作文件-写入、修改、删除、追加、读取文件内容、判断文件是否存在

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

这种方式无疑是很有局限性的,修改时想要保证文件内容不丢失,创建对象时必须填写全部数据,比较适合文件内容比较小的情况;