node.js 利用流实现读写同步,边读边写的方法
如下所示:
//10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写流 //先读一次,rs.on(data) //将读到的类容写入目标中 ,返回布尔值,如果是ture,继续写,默认情况应该是false,暂停读取 //ws.on('drain'),抽干后,回复读取 //监听读取文件完毕后,关闭读取rs.on('end') let rs=fs.createReadStream(source,{highWaterMark:4}); let ws=fs.createWriteStream(target,{highWaterMark:1}); rs.on('data',function (chunk) { //chunk是buffer类型 if(ws.write(chunk)===false){ //写不下,停止读取 rs.pause() } }); ws.on('drain',function () { //每次写的内存干了就恢复读取 console.log("111"); rs.resume() //恢复读取 }); rs.on('end',function (chunk) { ws.end(); }) } pipe('./1.txt','./3.txt')
上面这种写法比较繁琐,大家看完后,忘记就行
node.js提供给我们内置方法pipe
//10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { let rs=fs.createReadStream(source,{highWaterMark:4}); let ws=fs.createWriteStream(target,{highWaterMark:1}); //可读流到可写流,异步操作,可以保证内存不会被淹没,读一点,写一点 // 如果想看文件类容,使用readFile rs.pipe(ws); } pipe('./1.txt','./4.txt')
直接将读取的流操作到写入流中,还是异步操作
以上这篇node.js 利用流实现读写同步,边读边写的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
node.js中实现同步操作的3种实现方法
众所周知,异步是得天独厚的特点和优势,但同时在程序中同步的需求(比如控制程序的执行顺序为:func1 -> func2 ->func3 )也是很常见的.本文就是对这个问题记录自己的一些想法. 需要执行的函数: 复制代码 代码如下: var func1 = function(req,res,callback){ setTimeout(function(){ console.log('in func1'); callback(req,res,1); },13000); }
-
详解nodeJS中读写文件方法的区别
导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read, createReadStream三个方法,针对写操作为我们提供了writeFile,write, createWriteStream三个方法,下面分析一下它们的区别: 一.readFile和writeFile 1.readFile方法是将要读取的文件内容完整读入缓存区,再从该缓存区中读取文件内容,具体操作如下: fs.readFil
-
Node.js Streams文件读写操作详解
Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务.如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream).因此,我们先具体看看流,理解一下它们是怎么简化 I/O 操作的吧. 流是什么 流是 unix 管道,让你可以很容易地从数据源读取数据,然后流向另一个目的地. 简单来说,流不是什么特别的东西,它只是一个实现了一些方法的 EventEmitter .根据它实现的方法,流可以变成可读流(Readable),可写流(Writable),或者双向
-
node.js 利用流实现读写同步,边读边写的方法
如下所示: //10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写流 //先读一次,rs.on(data) //将读到的类容写入目标中 ,返回布尔值,如果是ture,继续写,默认情况应该是false,暂停读取 //ws.on('drain'),抽干后,回复读取 //监听读取文件完毕后,关闭读取rs.on('end') let rs=fs.createReadSt
-
Node.js 使用流实现读写同步边读边写功能
废话不多说了,直接给大家贴代码了,具体代码如下所示: //10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写流 //先读一次,rs.on(data) //将读到的类容写入目标中 ,返回布尔值,如果是ture,继续写,默认情况应该是false,暂停读取 //ws.on('drain'),抽干后,回复读取 //监听读取文件完毕后,关闭读取rs.on('end') l
-
Node.js利用Net模块实现多人命令行聊天室的方法
这篇文章介绍的是Node.js利用Net模块实现命令行式的多人聊天室,下面话不多说,来看看详细的介绍吧. 1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类: Server和Socket类.工厂方法. Server类如下图所示: net.Server类可以用来创建一个TCP或本地服务器,继承了EventEmitter. Socket类如下: net.Socket类一般用创建一个socket客户端或者是ne
-
Java与Node.js利用AES加密解密出相同结果的方法示例
前言 工作中遇到nodejs端通过aes加密,安卓客户端Java解密,同样nodejs也需要解密安卓客户端加密过来的内容,发现两个加密结果不一样,查询资料发现java端需要对密钥再MD5加密一遍,以下是Java与Node.js利用AES加密解密出相同结果的方法,需要的朋友们下面来一起学习学习吧. JAVA代码如下: package g.g; import java.security.MessageDigest; import javax.crypto.Cipher; import javax.c
-
Node.js利用console输出日志文件的方法示例
通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单介绍一下. 我们首先创建如下文件: // index.js let fs = require('fs'); let options = { flags: 'a', // append模式 encoding: 'utf8', // utf8编码 }; let stdout = fs.createWri
-
Node.js 利用cheerio制作简单的网页爬虫示例
本文介绍了Node.js 利用cheerio制作简单的网页爬虫示例,分享给大家,具有如下: 1. 目标 完成对网站的标题信息获取 将获取到的信息输出在一个新文件 工具: cheerio,使用npm下载npm install cheerio cheerio的API使用方法和jQuery的使用方法基本一致 如果熟练使用jQuery,那么cheerio将会很快上手 2. 代码部分 介绍: 获取segment fault页面的列表标题,将获取到的标题列表编号,最终输出到pageTitle.txt文件里
-
Node.js利用Express实现用户注册登陆功能(推荐)
要求 了解Express框架 了解node.js常用模块:express,body-parser,mysql 了解express Router 了解HTML form表单 了解MySQL Server 及安装使用 了解SQLyog使用 环境 OS: Win10 Node.js: v12.19.0 Express: v4.17.1 Yarn: v1.22.10 使用VScode IDE body-parser:1.19.0 mysql: 2.18.1 MySQL Server:5.7 SQLyog
-
node.js利用express自动搭建项目的全过程
一.安装express库和生成器 打开cmd输入命令: yarn global add express express-generator 解释: 上面里两个模块分别表示库和生成器,在express3时,安装express会自动的给你安装生成器express-generator ,但是在express4时,他们就被分开了,所以需要分别安装. 安装好后可以通过命令:express --version 检查是否安装成功. 出现版本号即为安装成功(如下图所示). 二.express生成器自动创建ex
-
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
一,node.js的作用, I/O的意义,(I/O是输入/输出的简写,如:键盘敲入文本,输入,屏幕上看到文本显示输出.鼠标移动,在屏幕上看到鼠标的移动.终端的输入,和看到的输出.等等) node.js想解决的问题,(处理输入,输入,高并发 .如 在线游戏中可能会有上百万个游戏者,则有上百万的输入等等)(node.js适合的范畴:当应用程序需要在网络上发送和接收数据时Node.js最为适合.这可能是第三方的API,联网设备或者浏览器与服务器之间的实时通信) 并发的意义,(并发这个术语描述的
-
Node.js利用js-xlsx处理Excel文件的方法详解
简介 本文介绍用 Node.js 中的 js-xlsx 库来处理 Excel 文件. js-xlsx 库是目前 Github 上 star 数量最多的处理 Excel 的库,功能强大,但上手难度稍大.文档有些乱,不适合快速上手. 本文对 js-xlsx 库进行一定的总结,并提供几个实用的例子供读者测试,学习,交流. 安装 $ npm install xlsx 一些概念 在使用这个库之前,先介绍库中的一些概念. workbook 对象,指的是整份 Excel 文档.我们在使用 js-xlsx 读取
随机推荐
- JavaScript 获取事件对象的注意点
- JQuery实现Repeater无刷新批量删除(附后台asp.net源码)
- JVM Tomcat性能实战(推荐)
- .NET中实现彩色光标、动画光标及自定义光标的方法
- Android中屏幕密度和图片大小的关系详解
- 用js取得鼠标所在位置的对象
- 浅析Bootstrap验证控件的使用
- 如何在Eclipse中设置Oracle的JDBC
- JavaScript中使用自然对数ln的方法
- python正则匹配抓取豆瓣电影链接和评论代码分享
- jquery ztree实现模糊搜索功能
- jQuery实现的一个自定义Placeholder属性插件
- jQuery插件uploadify实现ajax效果的图片上传
- Nginx 禁止IP访问如何实现
- Nginx启动、重启失败的一般解决方法和步骤
- Android获取apk程序签名信息代码示例
- Java中使用Jedis操作Redis的实现代码
- Ubuntu 15下安装JDK1.8教程
- c#异步task示例分享(异步操作)
- 基于android startActivityForResult的学习心得总结