博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.Js Stream(流)-(二)
阅读量:4288 次
发布时间:2019-05-27

本文共 2738 字,大约阅读时间需要 9 分钟。

Stream流之fs模块操作实例一

一、读取文件

实例1:指定每次读取数据量大小

//实例1,读取文件var fs=require('fs');var path=require('path');var file=path.resolve('/test1/one.txt');//指定每次读取数量var readable=fs.createReadStream(file,{	highWaterMark:5  //指定每次读取5字节,总共12字节,所以会读取3次});//监听是否可读取var count=0;readable.on('readable',function(){	console.info(file+'---可以读取'); //F:\test1\one.txt---可以读取})//监听每次读取到数据readable.on('data',function(chunk){	console.log(Buffer.isBuffer(chunk)); //true 	count+=chunk.length;	console.info(chunk.toString('utf-8'));});//读取结束readable.on('end',function(chunk){	console.log('读取结束,总共字节数:'+count); //读取结束,总共字节数:12});
实例2:读取暂停然后继续

//文件读取的暂停和继续var fs=require('fs');var path=require('path');var file=path.resolve('/test1/one.txt');var readable=fs.createReadStream(file,{	highWaterMark:6,	start:0});//读取一段成功readable.on('data',function(chunk){	console.log(chunk.toString()); //1: 123456 //2: 789012	//读取中止	readable.pause();	setTimeout(function(){		//继续读取		readable.resume();	},2000);});//读取结束readable.on('end',function(){	console.log('读取操作结束');});//读取关闭readable.on('close',function(){	console.log('读取操作关闭');});
实例3:读取文件部分内容,指定文件开始位置和结束位置读取

var fs=require('fs');var path=require('path');var file=path.resolve('/test1/one.txt');//指定开始位置,结束位置读取文件var readable=fs.createReadStream(file,{	highWaterMark:6,	start:6,	end:12});readable.on('open',function(fd){	console.log('打开文件成功,句柄:'+fd); // 打开文件成功,句柄:3});readable.on('data',function(chunk){	console.info(chunk.toString('ascii')); //789012});readable.on('end',function(){	console.log('读取结束');  //读取结束});readable.on('close',()=>{	console.log('读取关闭');  //读取关闭});readable.on('error',function(err){	console.log('读取异常,'+err); //当出现异常时触发});

二、写入文件

实例1:指定编码写入文件

var fs=require('fs');var path=require('path');var file=path.resolve('/test1/write.txt');var writeable=fs.createWriteStream(file,{	highWaterMark:6,	defaultEncoding:'utf8', //设置写入时默认的编码	flags:'w'  //如果不存在则创建});//当前写入完成时触发//调用end()方法时触发writeable.on('finish',function(){	console.log('写入完成');	process.exit(0); //程序退出});//当前出现异常时触发writeable.on('error',function(err){	console.log('写入异常,'+err);});writeable.write('中文abcdefghijk');//writeable.write('中文字符','ascii');  //显示指定写入编码,如果文件中有内容,同时也转码成ascii//标记结束writeable.end();
实例2:追加方式写入文件

//写入流实例var fs=require('fs');var path=require('path');var file=path.resolve('/test1/write.txt');//指定写入位置,创建写入流var writeable=fs.createWriteStream(file,{	//flags:'a+', //追加模式开开文件 ,指定start则无效	flags:'w',	start:5       //指定开始位置,会使当前位置之前的内容默认成空格});//设置默认编码writeable.setDefaultEncoding('utf8');var buf=new Buffer('微工具集:www.gongjuji.net');writeable.write(buf);//标记文件结尾writeable.end();// 写入文件结束时触发writeable.on('finish',function(){	console.log('写入文件成功'); // 写入文件成功});writeable.on('error',function(err){	console.log('写入文件出错:'+err);});console.log('代码执行结束');

转载地址:http://wfogi.baihongyu.com/

你可能感兴趣的文章
NamedParameterJdbcTemplate常用方法总结
查看>>
Spring JdbcTemplate中的回调
查看>>
Postgresql9.6中的数字和字符类型
查看>>
Java8总结之函数式编程
查看>>
【Java并发编程】一.并发简介
查看>>
【Java并发编程】二.Java并发基础
查看>>
Java中的Unsafe类
查看>>
分享一次解决线上java应用导致JVM内存溢出(OOM)的问题
查看>>
RabbitMQ基础概念介绍
查看>>
在虚拟机上安装RabbitMQ
查看>>
ConcurrentHashMap图例
查看>>
轻量级数据库访问框架FastSQL
查看>>
mysql常用函数-使用总结
查看>>
ElasticSearch基础概念
查看>>
Redis雪崩、穿透、热点key等优化
查看>>
redis基础知识总结
查看>>
智慧园区三维可视化物联网运营管理平台
查看>>
智慧社区网格化服务管理信息平台
查看>>
智慧消防三维预案辅助决策系统
查看>>
基于3DGIS+BIM的智慧园区运维管理平台
查看>>