三种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 相关文章推荐
PHP+jQuery+Ajax实现多图片上传效果
Mar 14 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
May 18 Javascript
微信小程序 详解Page中data数据操作和函数调用
Jan 12 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
Jun 16 Javascript
工作中常用到的ES6语法
Sep 04 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
详解如何用typescript开发koa2的二三事
Nov 13 Javascript
vue-router源码之history类的浅析
May 21 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 Javascript
d3.js实现图形缩放平移
Dec 19 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 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
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python变量和字符串详解
2017/04/29 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
对Python信号处理模块signal详解
2019/01/09 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python实现滑雪者小游戏
2020/02/22 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
2015年元旦文艺汇演主持词
2014/03/26 职场文书
天地会口号
2014/06/17 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS