三种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 相关文章推荐
javascript变量作用域使用中常见错误总结
Mar 26 Javascript
网页防止tab键的使用快速解决方法
Nov 07 Javascript
jQuery 无限级菜单的简单实例
Feb 21 Javascript
浅谈javascript实现八大排序
Apr 27 Javascript
javascript显示系统当前时间代码
Dec 29 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
基于cropper.js封装vue实现在线图片裁剪组件功能
Mar 01 Javascript
详解小程序云开发数据库
May 20 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 Javascript
解决Layui 表格自适应高度的问题
Nov 15 Javascript
javascript实现左右缓动动画函数
Nov 25 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和ACCESS写聊天室(五)
2006/10/09 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Python作用域用法实例详解
2016/03/15 Python
python 队列详解及实例代码
2016/10/18 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
django rest framework 过滤时间操作
2020/07/12 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
运动会稿件300字
2014/02/14 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
化学专业自荐信
2014/05/28 职场文书
市场推广策划方案
2014/06/02 职场文书
小学综合实践活动总结
2014/07/07 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
2014年话务员工作总结
2014/11/19 职场文书