文件操作与JSON

var fs = require('fs');
var path = require('path');
var args = process.argv.splice(2);
var command = args.shift();
var taskDescription = args.join(' ');
var file = path.join(process.cwd(), './tasks');

switch (command) {
	case 'list': 			// 列出所有已保存的任务
		listTasks(file);
		break;
	case 'add': 			//添加新任务
		addTask(file, taskDescription);
		break;
	default:
		console.log('Usage: ' + process.argv[0] + ' list|add [taskDecription]');
}

// 从一个文本文件中加载编码为JSON格式的数据
function loadOrInitializeTaskArray(file, cb) {
	fs.exists(file, function(exists) {
		var tasks = [];
		if (exists) {
			fs.readFile(file, 'utf8', function(err, data) {
				if (err) throw err;
				var data = data.toString();
				// 把用JSON编码的待办事项数据解析到任务数组中
				var tasks = JSON.parse(data || '[]');
				cb(tasks);
			});
		} else {
			cb([]);
		}
	});
}

function listTasks(file) {
	loadOrInitializeTaskArray(file, function(tasks) {
		for(var i in tasks) {
			console.log(tasks[i]);
		}
	});
}

// 把任务串行化后放到文件中
function storeTasks(file, tasks) {
	fs.writeFile(file, JSON.stringify(tasks), 'utf8', function(err) {
		if (err) throw err;
		console.log('Saved.');
	});
}

function addTask(file, taskDescription) {
	loadOrInitializeTaskArray(file, function(tasks) {
		tasks.push(taskDescription);
		storeTasks(file, tasks);
	});
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值