Node.js写文件的三种方法

时间:2022-11-01 21:28:11
博客搬家了,欢迎大家关注,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写文件的三种方法的更多相关文章

  1. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  2. JAVA写JSON的三种方法,java对象转json数据

    JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...

  3. VC中加载LIB库文件的三种方法

    VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中   在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...

  4. Logstash处理json格式日志文件的三种方法

    假设日志文件中的每一行记录格式为json的,如: {"Method":"JSAPI.JSTicket","Message":"JS ...

  5. java将doc文件转换为pdf文件的三种方法

    http://feifei.im/archives/93 —————————————————————————————————————————————— 项目要用到doc转pdf的功能,一番google ...

  6. python面对对象编程------3:写集合类的三种方法

    写一个集合类的三种方法:wrap,extend,invent 一:包装一个集合类 class Deck: def __init__( self ): self._cards = [card6(r+1, ...

  7. Python实现下载文件的三种方法

    下面来看看三种方法是如何来下载zip文件的:方法一: import urllib print "downloading with urllib" url = 'http://www ...

  8. 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 ...

  9. python下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

随机推荐

  1. c++模板类

    c++模板类 理解编译器的编译模板过程 如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”.看看我们几乎每天都能遇到的模板类吧,如S ...

  2. VirtualBox相关问题总结

    欢迎关注我的社交账号: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://gith ...

  3. usb 设备的端点 及输入输出方向

  4. LeetCode_N-Queens II

    Follow up for N-Queens problem. Now, instead outputting board configurations, return the total numbe ...

  5. CodeForce 356A Knight Tournament(set应用)

     Knight Tournament time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  6. 重启OpenStack服务步骤

    [重启neutron服务] 控制节点:service openstack-nova-api restartservice openstack-nova-scheduler restartservice ...

  7. 【朝花夕拾】Android安全之(一)权限篇

    前言        从Android6.0开始,Android系统对权限的处理产生了很大的变化.如果APP运行的设备系统版本为Android6.0或更高,并且target在23或更高,那么danger ...

  8. JS 中的原型 -- prototype、__proto__ 以及原型链

    原文: 1.深入理解javascript原型和闭包——prototype原型 2.三张图搞懂JavaScript的原型对象与原型链 打开浏览器控制台,任意定义一个对象,打印出来后,会发现有最后一定有一 ...

  9. 百度echarts样式开发

    Echarts如何进行实例化 var a1 = null; a1= echarts.init(document.getElementById('a1')); a1.setOption({ color: ...

  10. struts表单域模型注入

    表单使用struts标签,表单中每一个字段都可以这样来赋值 类(action).成员变量 这个叫域模型注入 <s:form action="orders" method=&q ...