三种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 相关文章推荐
表单项的name命名为submit、reset引起的问题
Dec 22 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
Jun 10 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 Javascript
谈一谈javascript中继承的多种方式
Feb 19 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
Jun 02 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
js 将canvas生成图片保存,或直接保存一张图片的实现方法
Jan 02 Javascript
JS运动特效之链式运动分析
Jan 24 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
PHP安全防范技巧分享
2011/11/03 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
JavaScript 事件记录使用说明
2009/10/20 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python制作词云的方法
2018/01/03 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
python实现弹窗祝福效果
2019/04/07 Python
python pygame实现方向键控制小球
2019/05/17 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
python实现FTP循环上传文件
2020/03/20 Python
Python 如何批量更新已安装的库
2020/05/26 Python
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
几道PHP的面试题
2012/05/19 面试题
高级Java程序员面试要点
2013/08/02 面试题
学前教育学生自荐信范文
2013/12/31 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
平遥古城导游词
2015/02/03 职场文书
教你用Python爬取英雄联盟皮肤原画
2021/06/13 Python
Elasticsearch 批量操作
2022/04/19 Python
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js