三种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 相关文章推荐
用jscript实现列出安装的软件列表
Jun 18 Javascript
项目中常用的JS方法整理
Jan 30 Javascript
跟我学习javascript的最新标准ES6
Nov 20 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
基于zepto.js实现登录界面
Oct 09 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
Jul 18 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
在vue-cli创建的项目中使用sass操作
Aug 10 Javascript
jQuery实现tab栏切换效果
Dec 22 jQuery
原生JavaScript实现随机点名表
Jan 14 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
PHP实现的简单日历类
2014/11/29 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
node.js基础知识汇总
2020/08/25 Javascript
js数组的基本使用总结
2021/01/18 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
浅谈Python中的模块
2020/06/10 Python
个人求职简历的自我评价
2013/10/19 职场文书
秦兵马俑教学反思
2014/02/07 职场文书
我为自己代言广告词
2014/03/18 职场文书
工会换届选举方案
2014/05/21 职场文书
2014高考励志标语
2014/06/05 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
商超业务员岗位职责
2015/02/13 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python