Node.js一些常用操作

  Node.js是事件驱动、异步、单线程、非阻塞I/O、开源跨平台的Javascript语言运行环境。最近用到了Node.js开发一些server端程序,整理了一下常用的涉及文件IO,stream,定时任务等基本操作。

文件流操作

  本部分涉及文件流按行读取文件,以及文件写入,文件夹相关操作

读取目录

1
2
3
4
5
6
7
8
9
10
var fs = require("fs"); // 依赖fs模块
fs.readdir("/data/", (err, files) => {
if (err) {
return console.error(err);
}
files.forEach( function (file){
// ....
});
});

删除文件

1
2
3
4
5
6
7
8
var fs = require("fs");
fs.unlink('input.txt', (err) => {
if (err) {
return console.error(err);
}
console.log("delete successfully");
});

文件流按行读取文件

参考 http://sodino.com/2016/04/28/nodejs-readline/

1
2
3
4
5
6
7
8
9
var lineReader = require('readline').createInterface({
input: fs.createReadStream(file)
});
lineReader.on('line', line => {
console.log(line);
});
lineReader.on('close', ()=>{
});

文件流写入

1
2
3
4
5
var fs = require('fs');
var ws1 = fs.createWriteStream('out.txt', 'utf-8');
ws1.write('xxxx...\n');
ws1.end();

定时任务

  利用了第三方的模块 https://github.com/node-schedule/node-schedule,比较好用,利用了Linux cron的语法。

1
2
3
4
5
6
7
8
var schedule = require('node-schedule');
var rule = '30 * * * * *'; // 每小时的30分执行一次
function scheduleCronstyle(){
schedule.scheduleJob(rule, function(){
console.log('scheduleCronstyle:' + new Date());
});
}
scheduleCronstyle();