珠峰培训node正式课--【笔记】|全局对象 | process | util | fs | stream 流
全局对象:
console ;
__filename ;
__dirname ;
setTimeOut ;
setImmediate(把参数函数放在下一个环节执行)
process对象
cwd //当前工作目录 console.log(process.cwd());
chdir //修改当前工作目录 process.chdir('..') ; 切换到上一层目录
memoryUsage //内存使用量 process.memoryUsage(); {rss:常驻内存,heapTotal:堆的总内存,heapUsed:堆得已使用内存}
nextTick //放在当前任务的末尾
================================
util
1、inherits //原型继承,(ChildFun只继承ParentFun原型上的属性与方法) util.inherits(ChildFun,ParentFun); var child = new ChildFun()
2、inspect
//关于枚举隐藏与强制显示
var util = required(‘util’);
var obj = new Object();
obj.name = 'liujinyu'
Object.defineProperty(obj,'age',{
value:27,
configurable:true, //可配置 可删除
writable:true, //值可以改变
enumerable:false //不可枚举
})
console.log(util.inspect(obj),{
showHidden:true //{name:'liujinyu',[age]:27}
})
3、isArray ;
4、isRegExp;
5、isDate;
fs
var content = fs.readFileSync('../file.txt',{encoding:'utf8'}) //同步
fs.readFile('../file.txt',{encoding:'uft8'},(err,data)=>{console.log(data)}) //异步 【!所有异步要晚于同步,所有异步放在下一个清单】
======================================================
【流】
流的概念:流是一组【有序】的,有【起点】和【终点】的【字节数据传输】手段;
不关心文件整体内容,文件多大,只关心是否读到、以及读到后的操作处理
流是一个【抽象接口】,被node中很多对象所实现,比如对一个http服务器的请求对象request是一个流,stdout也是流。
stream.Readable可读流
fs.createReadStream('../file.txt',[opations]); //opactions: flags对文件何种操作,默认‘r’, encoding , start 开始读取字节读索引位置,
//end 结束索引, highWaterMark 最高水位线,却省64kb
 var fs = require('fs');
 // 创建之后的流在准备好【接收】之前不会开始【发射】数据
 var rs = fs.createReadStream('data/account_0.data',{//创建流
     flage:'r',//打开文件之后想干什么  r只读操作   w写操作
     // encoding:'utf8'  //默认是buffer
     start:10,//读取的字节索引的开始位置
     end:30,//读取的字节索引的开始位置
     highWaterMark:10//最高水位线,却省默认64kb,一次取多少1字节
 })
 //可读流方法
 rs.setEncoding('utf8');//可以在创建流之后制定编码
 rs.pause();//通知对象 暂停 触发data事件
 rs.resume();//通知对象 恢复 触发data事件
 // rs.pipe();//设置【管道】,将可读流内容导入参数指定的【可写流】
 // 流是EventEmitter的子类
 // 下面是可读流触发的事件 用on来绑定 触发事件有 data\end\error
 rs.on('data',function(resData){//绑定一个“data”事件监听器,
     console.log(resData)  //会将流切换到“流动模式”,数据被尽可能快读出
 })
 rs.on('end',function(){//读完后触发
     console.log('读完了')
 })
 rs.on('error',function(err){//当数据接收错误时触发
     console.log(err);
 })
stream.writeStream可写流
var fs = require('fs');
//在fs模块中 用createWriteStream创建一个将流数据写入文件中的 WriteStream对象
var ws = fs.createWriteStream('data/my.data',{
    flags:'a',//默认w r=read w=write a=append
    encoding:'utf8',
    // start:0,// 从第几个字节开始写入
    highWaterMark: //却省16kb 设置缓存区大小 最高水位线设5字节
    // 可以说是控制写入速度  大口大口喂
})
//可写流的方法
ws.write('');//write写入缓存区
var flag = ws.write('');//flag,是否满足缓存区 highWaterMark 设置的大小
console.log(flag)
ws.on('drain',function(){
    console.log('drain')
})
// 结束写入数据时触发。迫使缓存区中数据立即写入目标对象,调用后不能再写入
ws.end('man');  //向流入写入数据
【练习】利用流,做一个copy方法,复制文件 copy(file1,file2) copy:file1=>file2
【pipe】
var fs = require('fs');
//在fs模块中 用createWriteStream创建一个将流数据写入文件中的 WriteStream对象
function copy(file1,file2){
    var rs = fs.createReadStream(file1);
    var ws = fs.createWriteStream(file2);
    rs.on('data',function(d){
        var flag = ws.write(d);
        if(!flag){//当写不进去了
            ws.pause();//暂停写入
        }
    })
    ws.on('drain',function(){//写入流 监听到写完
        ws.resume(); //恢复写入
    })
    rs.on('end',function(){
        ws.end();//当读完的时候也要关闭写入文件
    })
}
// copy('my.js','my1.js')
// ------ 用 pipe 重写 copy (pipe的源码上面的function cope 一样)--------
// 将数据的【制留量】限制到一个可接受的水平,以使得不同速度的来源和目标不会【淹没】可用内存
function copy_pipe(file1,file2){
    var rs = fs.createReadStream(file1);
    var ws = fs.createWriteStream(file2);
    rs.pipe(ws);
}
copy_pipe('my.js','my1.js')
============================================
珠峰培训node正式课--【笔记】|全局对象 | process | util | fs | stream 流的更多相关文章
- async  珠峰培训node正式课笔记 【async】任务流程控制,异步流程控制
		
var async = require('async'); // series 串形任务 console.time('cost') async.series({ two:function(callba ...
 - node 进程管理 child_process  [spawn,exec] |  珠峰培训node正式课  网络爬虫
		
run.js ; function set(){ i++ setTimeout(function(){ console.log(i) ){ set(); } },) }set(); child_pro ...
 - node.js学习(1)全局对象
		
1 计时器 1)三秒后执行 2) 每隔2秒执行一次 3)清除计时器 2 全局对象 1)当前文件所在目录 2)当前文件路径
 - node.js 中的全局对象
		
/** * Created by Administrator on 2016/8/29. */ const http = require("http"); const hostna ...
 - 珠峰培训node 珠峰爬虫| cron 定时任务
		
1.cron 定时任务 CronJob var CronJob = require('cron').CronJob; // 秒 分钟 时 天
 - Node.js:全局对象
		
概要:本篇博客主要介绍了node.js中的全局对象. 在JavaScript中,通常window是全局对象,而node.js中的全局对象是global,所有全局变量(除了global本身之外)都是gl ...
 - 30.Node.js 全局对象
		
转自:http://www.runoob.com/nodejs/nodejs-module-system.html 学习要点: - __filename - __dirname - setTimeou ...
 - Node.js学习笔记
		
相关介绍 1.Node.js或者Node,是一个可以让javascript运行在服务器端的平台. 2.Node.js是一个为实时Web应用开发而诞生的语言,它从诞生之初就充分考虑了再实时响应.超大规模 ...
 - Node.js入门笔记(2):全局对象(1)
		
以下将以API文档为基础进行分析学习 global对象 这些对象在所有模块里都可用.有些对象不是在全局作用域而是在模块作用域里,这些情况下面文档都会标注出来. __filename--返回当前模块文件 ...
 
随机推荐
- maven 引入qrcode.jar
			
mvn install:install-file -Dfile=e:\QRCode.jar -DgroupId=QRCode -DartifactId=QRCode -Dversion=3.0 ...
 - GO中标识符,标识符,变量,常量,iota
			
参考:https://www.cnblogs.com/nickchen121/p/11517455.html 一.标识符与关键字 1.标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变 ...
 - SQL系列(二)—— 查询(select)
			
在开始之前先了解下SQL中的操作分类.根据与数据库不同操作的交互,对数据不同的处理类型,可以将SQL分为四种:插入.删除.修改.查询.本篇文章中主要介绍查询操作.其实查询操作也是日常应用使用最为频繁且 ...
 - Channel概述
			
前言 前两篇文章介绍了NIO核心部分部分之一的缓冲区的相关内容,接下来我们继续学习NIO中另一个重要的核心部分--Channel(通道). 在学习这篇文章之前,先做下简单的说明,本文是一篇关于通道的概 ...
 - 解决WPF下popup不随着window一起移动的问题
			
/// <summary> /// Popup帮助类,解决Popup设置StayOpen="True"时,移动窗体或者改变窗体大小时,Popup不随窗体移动的问题 // ...
 - 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范
			
1.java注释 java中有三种注释方式,单行注释,多行注释,文档注释. (1).单行注释:快捷键Ctrl+/再次按撤销注释, (2).多行注释:Ctrl+shift+/ 撤销Ctrl+shift+ ...
 - java8使用stream的collect进行list转map注意事项
			
1.创建Person类 package com.xkzhangsan.normal.collectors; public class Person { private Integer id; priv ...
 - Spring怎么管理事务?
			
我们一般通过aop管理事务,就是把代码看成一个纵向有序的,然后通过aop管理事务,就好比增删改的时候需要开启一个事务,我们给他配置一个required,required就是有事务就执行事务,没有就给他 ...
 - Linux环境下:vmware安装Windows报错误-无人参与应答文件包含的产品密钥无效
			
最近在安装window server 2012 R2的时候,输入好密钥可以继续安装,但在后面又提示我“无人参与应答文件包含的产品密钥无效.删除无效的密钥或在无人参与应答文件中提供有效的产品密钥继续进行 ...
 - Computer Neworking: A Top-Down Approach
			
目录 Chapter 1: Computer Networks and the Internet 1. What is the Internet? 2. The Network Edge 3. The ...