三种Node.js写文件的方式


Posted in Javascript onMarch 08, 2016

本文分享了Node.js写文件的三种方式,具体内容和如下

1、通过管道流写文件

采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐)

var readStream = fs.createReadStream(decodeURIComponent(root + filepath.pathname)); // 必须解码url
 readStream.pipe(res); // 管道传输
 res.writeHead(200,{
   'Content-Type' : contType
 });

 // 出错处理
 readStream.on('error', function() {
   res.writeHead(404,'can not find this page',{
     'Content-Type' : 'text/html'
   });
   readStream.pause();
   res.end('404 can not find this page');
   console.log('error in writing or reading ');
 });

2、手动管理流写入

手动管理流,适合大小文件的处理

var readStream = fs.createReadStream(decodeURIComponent(root + filepath.pathname));
 res.writeHead(200,{
   'Content-Type' : contType
 });

 // 当有数据可读时,触发该函数,chunk为所读取到的块
 readStream.on('data',function(chunk) {
   res.write(chunk);
 });

 // 出错时的处理
 readStream.on('error', function() {
   res.writeHead(404,'can not find this page',{
     'Content-Type' : 'text/html'
   });
   readStream.pause();
   res.end('404 can not find this page');
   console.log('error in writing or reading ');
 });

 // 数据读取完毕
 readStream.on('end',function() {
   res.end();
 });

3、通过一次性读完数据写入

一次性读取完文件所有内容,适合小文件(不推荐)

fs.readFile(decodeURIComponent(root + filepath.pathname), function(err, data) {
   if(err) {
     res.writeHead(404,'can not find this page',{
       'Content-Type' : 'text/html'
     });
     res.write('404 can not find this page');

   }else {
     res.writeHead(200,{
       'Content-Type' : contType
     });
     res.write(data);
   }
   res.end();
 });

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jquery form表单提交插件asp.net后台中文解码
Jun 12 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
May 23 Javascript
解析JavaScript中delete操作符不能删除的对象
Dec 03 Javascript
JQuery中使用ajax传输超大数据的解决方法
Jul 14 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
js实现水平滚动菜单导航
Jul 21 Javascript
简单快速的实现js计算器功能
Aug 17 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 jQuery
js闭包学习心得总结
Apr 17 Javascript
JS实现点击拉拽轮播图pc端移动端适配
Sep 05 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
jquery插件实现搜索历史
Apr 24 jQuery
javascript创建对象、对象继承的实用方式详解
Mar 08 #Javascript
理解javascript正则表达式
Mar 08 #Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 #Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 #Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
Mar 07 #Javascript
JavaScript中将数组进行合并的基本方法讲解
Mar 07 #Javascript
Bootstrap每天必学之日期控制
Mar 07 #Javascript
You might like
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
定义select的边框颜色
2008/04/28 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
2018/05/16 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
使用python制作一个解压缩软件
2019/11/13 Python
Python列表如何更新值
2020/05/27 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
信息技术专业个人自我评价
2013/12/11 职场文书
小学生开学感言
2014/02/28 职场文书
决心书标准格式
2014/03/11 职场文书
中秋晚会策划方案
2014/06/12 职场文书
法定授权委托证明书
2014/09/27 职场文书
小学中队活动总结
2015/05/11 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
升学宴家长答谢词
2015/09/29 职场文书
导游词之江西赣州
2019/10/15 职场文书
用python自动生成日历
2021/04/24 Python
go开发alertmanger实现钉钉报警
2021/07/16 Golang
golang操作rocketmq的示例代码
2022/04/06 Golang
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby
Mysql如何查看是否使用到索引
2022/12/24 MySQL