Node.js学习笔记(二)

fs模块

var fs=require('fs');

执行对文件系统的操作,与其他模块不同的是,他提供了同步和异步的方法,所有同步(或者阻塞)的操作文件系统的方法都会以’Sync’结尾。

同步读取:fs.readFileSync('path/to/file');

该方法将会返回一个包含文件完整内容的Buffer对象。Buffer对象是Node用来高效处理数据的方式,是一个包含0个或任意个字节的数组(和Array不同),无论数据是二进制文件还是ASCII或是其他格式,Buffer都可以通过调用toString()方法将其转换为字符串。

var str=buf.toString();
//同步读取text1中的字符串内容
var fs=require('fs');
var str=fs.readFileSync('text1.txt').toString();
console.log(str);

若我们在该方法中增加一个参数utf-8,则读到的内容为String类型。

fs.readFileSync('path/to/file','utf-8')

同步操作的好处是代码简单,缺点是需要等待IO操作,在等待的时间内无法响应其他的事件,而异步读取不用等待IO操作。

异步读取:fs.readFile('path/to/file','utf-8',callback);

其中callback为标准的回调函数,第一个参数代表错误信息,第二个参数代表读到的结果。当文件正常读取时,err为null,data读到的数据因‘utf-8’为String类型,若无该参数,为Buffer类型。当文件发生错误时,err代表一个错误对象,data为undefined。

function(err,data){
    if(err){
        console.log(err);
    }
    else{
        console.log(data);
        }
}

http模块

 var http=require('http');

应用程序不直接和http协议打交道,而是操作http模块提供的request和response对象。request对象封装了http请求,调用request对象就可以拿到所有http请求的信息。response对象封装了http响应,操作response对象的方法可以将http响应返回给浏览器。他们均为stream类型。
方法一:http.get();

http.get('url',callback);//用来发起简单的GET请求

第一个参数是想要GET的URL,第二个参数为回调函数。

function callback(response){...};

其中response为stream对象,所以有

response.on('data',function(chunk){
    ...
    }).on('error',function(){
    ...
    }.on('end',function(){
    ...
    })

其中,data事件表示流的数据已经可以读取了,end事件表示这个流已经到末尾了,error事件表示出错了。data事件可能有很多次,每次传递的chunk是流的一部分数据。

 var http=require('http');
 http.get("http://www.sina.com/index.html",function(response){
    response.setEncoding('utf8');//data事件中传递字符串
    response.on('data',function(chunk){
        var data="";
        data+=chunk;
    }).on('end',function(){
        console.log(data);
    })
 })

方法二:http.createServer();

http.createServer(callback);//创建一个服务器用http协议进行通信,返回一个http服务器实例,接收一个回调函数,在服务器每一次进行连接的时候执行。
var http=require('http');
var fs=require('fs');
var server=http.createServer(function(require,response){
    response.writeHead(200, { 'content-type': 'text/plain' });
    var rs=fs.createReadStream('text3.txt','utf-8');
    rs.pipe(response);
})
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');

完成了nodeschool的learnyounode的所有练习,具体代码

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值