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 ...
随机推荐
- 关于 Integer 的一个坑
其实 JDK 中有很多小坑, 我们稍微不注意, 就掉进去了, 然后调了半天 bug, 也不知道为何. 很闹心! 这里说一下, 在Integer中的一个小坑. 看一个小例子: @Test public ...
- RabbitMQ的work queue(1)
http://www.rabbitmq.com/tutorials/tutorial-two-java.html 在第一个教程中,我们通过一个命名队列来发送消息和接受消息.在这一节,我们将创建一个工作 ...
- Redis从基础命令到实战之集合类型(Set)
Redis集合类型的基础功能也是存储字符串列表,和列表类型的区别是字符串不能重复且没有顺序.当然,存储元素唯一性也可以通过应用程序保证,单从这一点上并没有体现出对比列表类型的特点. 其实,集合类型的一 ...
- android ListView 九大重要属性详细分析、
android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...
- Java学习基础1
Java 平台: Java API JVM 特点:可跨平台 Java 运行机制: 编译 运行 Java文件-------> ...
- Basic Calculator
本博客介绍leetcode上的一道不难,但是比较经典的算法题. 题目如下: Implement a basic calculator to evaluate a simple expression s ...
- CSS3转换
一.2D转换 1.css3 rotate()旋转 通过指定的角度参数对原元素指定一个2D rotation(2D 旋转) 语法: transform:rotate(<angle>); ...
- 获取android控件的高度
问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth.getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单 ...
- highlight.js 页面 代码高亮
官网:https://highlightjs.org/ 功能: 支持 155 种编程语言的语法解析:拥有 73 种样式 自动检测编程语言 可以在 node.js 平台上运行 支持各种标签 与任何 js ...
- [OC笔记]@property之个人理解,大神轻拍
/** * 一个简单的对象 * * @author suzhen * */ public class SimpleObjcet { /** * 声明一个age字段 */ private Object ...