三种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 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
html5 canvas js(数字时钟)实例代码
Dec 23 Javascript
LABjs、RequireJS、SeaJS的区别
Mar 04 Javascript
JavaScript中定义对象原型的两种使用方法
Dec 15 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
JavaScript对象_动力节点Java学院整理
Jun 23 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
May 04 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
Vue3.0 响应式系统源码逐行分析讲解
Oct 14 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
Oct 28 Javascript
vue点击按钮实现简单页面的切换
Sep 08 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
python微信撤回监测代码
2019/04/29 Python
Numpy的简单用法小结
2019/08/28 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
毕业生求职自荐信怎么写
2014/01/08 职场文书
银行类自荐信
2014/02/04 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
五一放假通知怎么写
2015/08/18 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书