nodejs基础实验

nodejs基础#

/**
 * Created by ramosy on 2016/4/13.
 */

说明:
1、这篇文章适合有一定服务器段基础,熟悉javascript语法,知道nodejs基本原理的人阅读。
2、这是个人的笔记,不会像教科书一样详细。
目录结构:

var http = require("http"),
fs = require("fs"),
path = require("path"),
events = require('events'),
zlib = require('zlib');

/*
*笔记例子编号:1
*对象:http
*函数:createServer
*实例解释:创建一个nodejs的服务
*/
http.createServer(function(request, response) {

response.writeHead(200, {"Content-Type": "text/plain"});

response.write("Hello World");

response.end();

}).listen(8888);
console.log("启动nodejs服务: http://127.0.0.1:8888");

/*
*笔记例子编号:2
*对象:fs
*函数:readFile
*实例解释:获取相对路径的文件,并在回调函数进行处理(阻塞代码实例)
*/
fs.readFile(__dirname +'\\'+ 'data.json', {encoding: 'utf8'}, function (err, data){

console.log(data.toString());

});
/*
*对象:fs
*函数:readFileSync
*实例解释:获取相对路径的文件,进行数据处理(非阻塞代码实例)
*/
var data = fs.readFileSync(__dirname +'\\'+ 'data.json');

console.log(data.toString());


/*
*笔记例子编号:3
* 对象:events
* 实例解释:
* 1.实例化一个events对象(eventEmitter)
* 2.创建connection事件和处理函数connectHandler
* 3.创建data_received事件和匿名处理函数
* 4.触发事件connection--->connection的函数connectHandler执行--->触发事件data_received--->data_received匿名函数执行
*/
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandler = function connected() {
console.log('连接成功。');
// 触发 data_received 事件
eventEmitter.emit('data_received');
};
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
console.log('数据接收成功。');
});
// 绑定 connection 事件
eventEmitter.on('connection', connectHandler);
// 触发 connection 事件
eventEmitter.emit('connection');

console.log("程序执行完毕。");

/*
 *笔记例子编号:4
 * 对象:fs
 * 函数:createReadStream
 * 实例解释:读取一个文件流
 * 事件:data 这事件在有可读数据的时候被触发,打印出流的数据
 * 事件:end 没有更多的数据可读时触发
 * 事件:error 在接收和写入过程中发生错误时触发
 */
// 创建可读流
var readerStream = fs.createReadStream(__dirname+"\\"+"data.txt");
// 设置编码为 utf8。
readerStream.setEncoding('UTF8');
// 处理流事件 --> data, end, and error
readerStream.on('data', function(chunk) {
console.log("当有数据可读时触发:"+chunk);
});
//监听end事件并添加匿名处理函数
readerStream.on('end',function(){
console.log("没有更多的数据可读时触发");
});
//监听error事件并添加匿名处理函数
readerStream.on('error', function(err){
console.log("在接收和写入过程中发生错误时触发:"+err.stack);
});

/*
 *笔记例子编号:5
 * 对象:fs
 * 函数:createWriteStream
 * 实例解释:创建一个可写入的流
 * 事件:write 写入操作
 * 事件:end 在文件的末尾加字符串或其他信息
 * 事件:finish 再写入数据完成时候触发
 * 事情:error 发生错误时候触发
 */
console.log("程序执行完毕");
var data = '我在测试createWriteStream';

// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream(__dirname+"\\"+'output.txt');

// 使用 utf8 编码写入数据
writerStream.write(data,'UTF8');

// 标记文件末尾
writerStream.end(";");

// 处理流事件
writerStream.on('finish', function() {
console.log("写入完成。");
});

//错误发生时候触发
writerStream.on('error', function(err){
console.log(err.stack);
});

console.log("程序执行完毕");

/*
 *笔记例子编号:6
 * 对象:fs
 * 函数:createReadStream、createWriteStream
 * 实例解释:创建一个可写入的流-->创建一个可写的流 (管道操作:把一个可读流写入文件)
 * 事件:pipe 把一个可读流写入文件
 */

// 创建一个可读流
var readerStream = fs.createReadStream(__dirname+"\\"+'pipe_input.txt');

// 创建一个可写流
var writerStream = fs.createWriteStream(__dirname+"\\"+'pipe_output.txt');

// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream);

console.log("程序执行完毕");

/*
 *笔记例子编号:7
 * 对象:fs
 * 函数:createReadStream、createWriteStream、createGzip
 * 实例解释:压缩文件
 * 事件:pipe 把一个可读流写入文件
 */

// 压缩 input.txt 文件为 input.txt.gz
fs.createReadStream(__dirname+"\\"+'input.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream(__dirname+"\\"+'input.txt.gz'));

console.log("文件压缩完成。");


/*
 *笔记例子编号:8
 * 对象:fs
 * 函数:createReadStream、createWriteStream、createGzip
 * 实例解释:解压文件
 * 事件:pipe 把一个可读流写入文件
 */
// 解压 input.txt.gz 文件为 input.txt
fs.createReadStream(__dirname+"\\"+'input.txt.gz')
.pipe(zlib.createGunzip())
.pipe(fs.createWriteStream(__dirname+"\\"+'input.txt'));

console.log("文件解压完成。");

posted on 2016-04-14 11:05  林尾剑  阅读(220)  评论(0)    收藏  举报

导航