缓存模块和流模块
来源:互联网 发布:好特软件站 编辑:程序博客网 时间:2024/06/06 22:45
var fs=require("fs");fs.readFile("file.txt",function(err,data){if(err) throw err;console.log(data)});
结果:得到的是一个Buffer对象
<Buffer 61 0d 0a 61 0d 0a 61 0d 0a 61 0d 0a 61 0d 0a 61 0d 0a 0d 0a>
为了展示数据,必须将编码作为参数之一提供给fs.readFile()
var fs=require("fs");fs.readFile("file.txt","utf8",function(err,data){if(err) throw err;console.log(data)})
结果:
a
a
a
a
a
现在文件的内容会显示出来,不在是元素的缓存区
缓冲区是一个种处理二进制数据的一种方式,。由于javascript不能很好的处理二进制数据,所以缓冲区实际上是对原始内存的分配
---------------------------------------------------一以下为流模块内容--------------------------------------------------------------------------
流是一个标准概念,有如下三个主要流:
*标准输入
*标准输出
*标准错误
流能干嘛?
流可用于创建代理服务器 流服务器或者文件上传的服务,比如图像尺寸调整或视频编码转换
如何创建两个HTTP服务器,使用流从一个服务器代理到另一个服务器的流量?
可读流:
nodejs中的流是可以读/写的,它与早先看到的标准输入和标准输出有松散的关联:标准输入时可读的 而标准输出是可写的
var fs=require("fs");var stream =fs.ReadStream("file.txt");var data="";stream.setEncoding("utf8");stream.on("data",function(chunk){<span style="white-space:pre"></span>data+=chunk;<span style="white-space:pre"></span>console.log("read some data");})stream.on("close",function(){ console.log("all the data is read----------") console.log(data)//打印出txt文件里面的文字})
可写流:
显然,我们也可以创建可写流以便写数据。这意味着,只要一段简单的脚步,就可以使用流读入文件然后写入另外一个 文件
var fs=require("fs");var readStream =fs.ReadStream("file.txt");//读取文件var writeSteam=fs.WriteStream("file2.txt");//写入文件readStream.setEncoding("utf8");readStream.on("data",function(chunk){writeSteam.write(chunk);})readStream.on("close",function(){writeSteam.end();})
通过管道连接流:
pipe()方法会仔细处理事件,在需要的时候回暂停流并回复流的操作,所有触发需要对事件的发生完全控制,否则应该使用pipe(),效果同上
var fs=require("fs");var readStream =fs.ReadStream("file.txt");var writeSteam=fs.WriteStream("file2.txt");readStream.pipe(writeSteam)
媒体播放:
流可以在许多对象上也使用留下的HTTP模块一起使用,
在HTTP模块中,相应对象实际上是一个可写流。它让文件以可读流的方式写入。然后九宫格管道成为响应对象的可写流,这和我们看到的复制文件示例一样。
由于pipe()处理了所有需要的暂停和恢复,所以只需要几行代码,流MP3服务器就建成了
var http=require("http"),fs=require("fs");http.createServer(function(request,response){var mp3='danosongs.com-rapidarc.mp3';//一个mp3文件var stat=fs.statSync(mp3);response.writeHead(200,{"Content-Type":"audio/mpeg","Content-Length":stat.size});var readableStream=fs.createReadStream(mp3);readableStream.pipe(response);}).listen(3000);
效果:
- 缓存模块和流模块
- 微软企业库4.1学习笔记(十九)缓存模块7 扩展和修改缓存模块
- 【构建Android缓存模块】
- apache 缓存模块配置
- Nginx缓存模块proxy_store
- 利用Apache模块mod_expires和mod_headers实现文件缓存
- 驱动模块和桩模块
- 桩模块和驱动模块
- 桩模块和驱动模块
- urllib模块和requests模块
- md5模块和hashlib模块
- 桩模块和驱动模块
- urllib2模块和cookielib模块
- sys模块 和os模块
- getpass模块和random模块
- os模块和shutil模块
- 桩模块和驱动模块
- angular2模块和共享模块
- 使用FTP下载文件connect.retrieveFileStream(filename) 获取不到InputStream流,返回null的问题
- TCP/IP 多线程服务端多客户端通信 readLine
- 学习软件工程课程后感
- 回文数
- ZXing中文乱码解决
- 缓存模块和流模块
- Android N 分屏适配
- 从git上导出项目
- 设置断点进行调试的原理
- 数据结构之链表的常见操作
- redhat oracle10g安装
- Android之双击Home退出应用
- IBM将宣布建立英国数据中心,跻身世界一流AI阵营
- 文字滚动显示效果