三种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 jsFiddle JSBin在线调试器
Mar 14 Javascript
JQury slideToggle闪烁问题及解决办法
Jul 05 Javascript
html+js实现动态显示本地时间
Sep 21 Javascript
javascript中sort() 方法使用详解
Aug 30 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
Vue无限滑动周选择日期的组件的示例代码
Jul 18 Javascript
Webpack中SplitChunksPlugin 配置参数详解
Mar 24 Javascript
详解Vue Cli浏览器兼容性实践
Jun 08 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
用PHP和ACCESS写聊天室(三)
2006/10/09 PHP
PHP中Date获取时间不正确怎么办
2008/06/05 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
js实现微博发布小功能
2017/01/12 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python模拟登录12306的方法
2014/12/30 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
快速了解python leveldb
2018/01/18 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
详解Django配置优化方法
2019/11/18 Python
python3 求约数的实例
2019/12/05 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
Python tkinter模版代码实例
2020/02/05 Python
小学新教师培训方案
2014/02/03 职场文书
文字自荐书范文
2014/02/10 职场文书
鲜花方阵解说词
2014/02/13 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫