node学习笔记(三)
//事件驱动events
//events是node最重要的模块没有之一,因为node.js本身的架构就是事件式的,而他提供了唯一的接口,所以堪称node.js事件编程的基石;
//events几乎被所有模块依赖 //事件发射器
//EventEmitter支持多个事件监听器,监听器会依次调用; var emitter = require('events').EventEmitter;
var e = new emitter(); //为go事件增加2个监听器
e.on('go',function(obj,willDoing){
console.log(obj + ',will do ' + willDoing);
}) e.on('go',function(obj,isDoing){
console.log(obj + ',is doing ' +isDoing );
}) //发射
e.emit('go','smile','homework'); //smile,will do homework
//smile,is doing homework
//EventEmitter常用API //为指定事件创建一个监听器,接受一个字符串event和一个回调函数listener;
e.on(event,listener); //发射event事件,接受N个参数;
e.emit(event,[arg1],[arg2].....[argN]); //为指定事件注册一个单词监听器,即监听器只会触发一次;
e.once(event,listener); //移除指定事件的某个监听器,listener必须是注册过的监听器
e.removeListener(event,listener); //移除所有事件的所有监听器,如果指定event则移除指定事件的所有监听器;
e.removeAllListeners([event]); //error事件
//遇到异常的时候会发射error事件
e.emit('error'); //继承EventEmitter
//大多数时候,我们不会直接使用EventEmitter,而是在对象中继承他,包括http,fs,net,只要支持事件响应的核心模块,都是EventEmitter的子类; //文件系统fs
//fs模块是文件操作的封装,它提供了文件的读取,写入,更名,删除,遍历目录,链接等Posix操作
//fs模块和其他模块不同全部提供了异步和同步操作 var fs = require('fs'); //fs.readFile();
//读取文件函数
//filename:文件名,encoding:编码,callback(err,data):err错误,data内容;
fs.readFile(filename,[encoding],[callback(err,data)]); //读取文件函数(同步版)
//如有错误需要用try..catch来处理
//fs.readFileSync(filename,[encoding]); //fs.open();
//Posix open函数的封装
//fs.open与c#中的fopen类似接受两个必选参数
//path:文件路径
//flags可以是以下值:
//{
r : 读取 模式打开文件;
r+ : 读写 模式打开文件;
w : 写入 模式打开文件, 没有 则创建
w+ : 读写 模式打开文件, 没有 则创建
a : 追加 模式打开文件, 没有 则创建
a+ : 读取追加 模式打开文件, 没有 则创建
//}
//mode参数用于创建文件时给文件指定权限,默认是0666.回调函数将会传递一个文件描述符fd
//文件权限指的是posix操作系统中对文件读取和访问权限的规范,通常用一个八进制数来表示
//例如:0754表示文件所有者的权限是7(读,写,执行),
//同组用户权限是5(读,执行),其他用户权限是4(读),写成字符表示就是-rwxr-xr--
//文件描述符是一个非负整数,表示操作系统内核为当前进程所维护的打开文件的记录表索引
fs.open(path,flags,[mode],[callback(err,fd)]); //fs模块函数表
打开文件 fs.open(path,flags,[mode],callback(err,fd));
关闭文件 fs.close(fd,[callback(err)]);
读取文件内容 fs.readFile(filename,[encoding],[callback(err,data)]);
写入文件内容 fs.writeFile(filename,[encoding],[callback(err)]);
删除文件 fs.unlink(path,[callback(err)]);
node学习笔记(三)的更多相关文章
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- WinForm窗体嵌入
一.在winform窗体上添加两个控件 1.容器>Panel 2.添加 SideBar.dll (下载链接:http://pan.baidu.com/s/1o6qhf9w) (1)将SideBa ...
- 使用ZooKeeper实现软负载均衡(原理)
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,提供的功能包括配置维护.名字服务.分布式同步.组服务等. ZooKeeper会维护一个树形的数据结构,类似于Windows资源管理器 ...
- 使用myeclipse为java web项目添加SSH框架
添加SSH框架时,要严格按照先Struts,再Spring,最后Hibernate.添加方法见下方: 第一步:添加Struts框架 请按照图示一步步认真执行,配置好struts才可以进行下一步 第二步 ...
- python爬虫:一些常用的爬虫技巧
python爬虫:一些常用的爬虫技巧 1.基本抓取网页 get方法: post方法: 2.使用代理IP 在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP; 在urllib2包中有Pr ...
- poj1157LITTLE SHOP OF FLOWERS
Description You want to arrange the window of your flower shop in a most pleasant way. You have F bu ...
- LNMP添加、删除虚拟主机及伪静态使用教程
一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问.LNMP 1.2的网站添加过程和LNMP 1.1的基本类似,但是增加了FTP和数据库的创建.LNMP1.2的防跨目录也由原来在php.in ...
- 嵌套移动APP端的H5页面meta标签
<meta charset="utf-8"> <meta content="width=device-width, initial-scale=1.0, ...
- JavaScript 随笔2 面向对象 原型链 继承
第六章 面向对象的程序设计 1.创建对象的几种方式 A)工厂模式 function CreatObj(name,sex,age){ this.name=name; this.sex=sex; this ...
- 模仿win10样式,基于jquery的时间控件
工作需要,写了一个基于jquery的时间控件,仿win10系统时间控件格式. 目前基本功能都有了,但时间格式只实现少数,但由于结构设计已经充分优化,填充起来非常容易. 这个控件相对网上其他的时间控件, ...
- modelsim 中 WAVE窗口中能不能只显示变量名,而不显示路径
可以的,在wave窗口左下角有一个黑色的logo,你点击它就可以省电路径,只显示port名称,再点击就切换回来了,如图红色圈圈标记的logo,你可以试试!