三种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 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
JS IE和FF兼容性问题汇总
Feb 09 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
javascript的BOM汇总
Jul 16 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
Aug 29 Javascript
easyui导出excel无法弹出下载框的快速解决方法
Nov 10 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
Nov 16 Javascript
JavaScript实现的选择排序算法实例分析
Apr 14 Javascript
JavaScript体验异步更好的解决办法
Jan 08 Javascript
Vue实现Layui的集成方法步骤
Apr 10 Javascript
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
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
PHP闭包实例解析
2014/09/08 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
Angular项目如何升级至Angular6步骤全纪录
2018/09/03 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
详解Python中for循环的使用
2015/04/14 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python简单I/O操作示例
2019/03/18 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
怎样客观的做好自我评价
2013/12/28 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
交通事故被告答辩状
2015/05/22 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
python实现图片批量压缩
2021/04/24 Python
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS