//事件驱动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学习笔记(三)的更多相关文章

  1. ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心

    作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...

  2. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  3. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  4. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  5. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  6. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  7. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  8. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

随机推荐

  1. 转:永久解决火狐浏览器出现的flash版本更新问题

    发现问题: 1.找到火狐浏览器,并打开出现问题的页面. 2.点击火狐浏览器的"打开菜单"按钮,选择"附加组件"按钮. 3.在"搜索所有添加附件&quo ...

  2. JAVA类图

    类与类图 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能, ...

  3. 如何在真机装linux(本人在台式机上又添了个硬盘)

    首先呢,本人就是小渣渣,所以对于装ubuntu在真机,刚开始真不知道如何下手,以前只是在虚拟机中装过,在经过查阅各种资料后,成功安装,我的台式机本身装的系统win7,是下面就是我安装的过程啦 1. 我 ...

  4. cf 733f

    给你很多条边,每条边有一个初始边权w1,然后还有一个值表示把这个边权减一的代价w2,然后给你一个预算budget,然后让你输出怎么选边之后构成的树的边权和最小(在用budget减少了边权之后),输出你 ...

  5. javascript 伪协议

    [javascript 伪协议] 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascrip ...

  6. 【Python全栈笔记】07 [模块二] 20 Oct 冒泡排序

    给出一个列表,进行冒泡排序 原理算法: li = [52, 37, 23, 11, 3, 1, ] print(li) # 每次循环,进行一次排序,列表内数字两两比较,最大的数字排到最末尾 # 一共循 ...

  7. 解决:NoSuchAlgorithmException: Algorithm HmacSHA1 not available

    windows下运行macInstance = Mac.getInstance("HmacSHA1");完全正常,Linux下则出现异常: java.security.NoSuch ...

  8. pandas中将timestamp转为datetime

    参考自:http://stackoverflow.com/questions/35312981/using-pandas-to-datetime-with-timestamps 在pandas Dat ...

  9. 自定义citationstyles(cls)文献引用模板

    最近需要用国内某期刊的模板来写东西.所以需要自定义模板.国内的期刊主要遵循GB7714-2005的文献格式.对于经常使用Zotero.mendeley等免费的知识管理工具的同学,可以从这里获取cls模 ...

  10. iOS 键盘类型

    版权声明:本文为博主原创文章.请尊重作者劳动成果,转载请注明出处. UIKeyboardTypeDefault: UIKeyboardTypeASCIICapable: UIKeyboardTypeN ...