Node.js写文件的三种方法
博客搬家了,欢迎大家关注,https://bobjin.com
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();
});
博客搬家了,欢迎大家关注,https://bobjin.com
Node.js写文件的三种方法的更多相关文章
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
- JAVA写JSON的三种方法,java对象转json数据
JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...
- VC中加载LIB库文件的三种方法
VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...
- Logstash处理json格式日志文件的三种方法
假设日志文件中的每一行记录格式为json的,如: {"Method":"JSAPI.JSTicket","Message":"JS ...
- java将doc文件转换为pdf文件的三种方法
http://feifei.im/archives/93 —————————————————————————————————————————————— 项目要用到doc转pdf的功能,一番google ...
- python面对对象编程------3:写集合类的三种方法
写一个集合类的三种方法:wrap,extend,invent 一:包装一个集合类 class Deck: def __init__( self ): self._cards = [card6(r+1, ...
- Python实现下载文件的三种方法
下面来看看三种方法是如何来下载zip文件的:方法一: import urllib print "downloading with urllib" url = 'http://www ...
- Viewing the interface of your Swift code,查看Swift代码的头文件的三种方法
Technical Q&A QA1914 Viewing the interface of your Swift code Q: How do I view the interface ...
- python下载文件的三种方法
Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...
随机推荐
- 装饰者模式 Decoration
1.什么是装饰者模式 动态给对象增加功能,从一个对象的外部来给对象添加功能,相当于改变了对象的外观,比用继承的方式更加的灵活.当使用装饰后,从外部系统的角度看,就不再是原来的那个对象了,而是使用一系列 ...
- Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo
目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤 ...
- HTML5 标签 details 展开 搜索
details有一个新增加的子标签--summary,当鼠标点击summary标签中的内容文字时,details标签中的其他所有元素将会展开或收缩. 默认状态为 收缩状态 设置为展开状态为 <d ...
- 简单Linux命令学习笔记
1.查看进程 ps -ef | grep 关键字 /*关键字为服务名*/ netstat -unltp | grep 关键字 /*关键字为服务名或者是端口均可*/ 2.杀死进 ...
- 《CPU的工作过程》
本文转载自inter官方网址:https://software.intel.com/zh-cn/articles/book-Processor-Architecture_CPU_work_proces ...
- 【swift】BlockOperation和GCD实用代码块
//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...
- Selenium-java-获取当前时间
1 获取当前时间 // 获取当前时分秒 Calendar now = Calendar.getInstance(); int is = now.get(Calendar.HOUR_OF_DAY); i ...
- 豪情-CSS解构系列之-新浪页面解构-01
目录: 一. 新浪的布局特点 二. 内容细节的特点 三. 其中相关的一些基础技术点 1. 常见布局方法 2. 布局要点 3. Debugger误区 4.列表 5.字体颜色 6.CSS选择符 7.CSS ...
- asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题
最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下: 源代码:asp.net中使用一般处理程序生成验证码 Application Exception Sys ...
- TDD原则
TDD 介绍 测试驱动开发,或者叫 TDD,是一个敏捷方法,通过确保在代码是先前手动编写测试用 例,用测试来驱动开发,从而翻转开发生命周期(它不只是作为一种校验工具). TDD 的原则很简单的: 只有 ...