三种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 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
ajax处理php返回json数据的实例代码
Jan 24 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
Jan 10 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
一个极为简单的requirejs实现方法
Oct 20 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
May 07 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
Aug 30 Javascript
Electron实现应用打包、自动升级过程解析
Jul 07 Javascript
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
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/08/08 PHP
php开发文档 会员收费1期
2012/08/14 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
jQuery 表单验证扩展(三)
2010/10/20 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python continue语句用法实例
2014/03/11 Python
详解在Python中处理异常的教程
2015/05/24 Python
python框架中flask知识点总结
2018/08/17 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
python实现感知器算法(批处理)
2019/01/18 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
社区工作者思想汇报
2014/01/13 职场文书
学子宴答谢词
2014/01/25 职场文书
公司员工活动策划方案
2014/08/20 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
JavaScript canvas实现流星特效
2021/05/20 Javascript
MySQL日期时间函数知识汇总
2022/03/17 MySQL