上节课讲了如何利用读取流读取数据。可视化的理解如下:
![](https://img.haomeiwen.com/i2444638/ccf8af849b28f33f.png)
数据一点一点的从通道过来,填充到 Buffer 里,当 Buffer 填满的时候,会将这部分数据返回给给我们,通过 data
监听数据返回并输出到控制台中。
不过我们更常做的是将数据发回给客户端(浏览器)或创建新文件,这节课将会创建写入流并将数据放入其中发送到某处。
基于上节课读取流的代码
- 创建写入流,第一个参数是往哪个位置写入数据
- 在数据返回时通过写入流写入数据
'app.js'
var fs = require('fs');
var readStream = fs.createReadStream(__dirname + '/readme.txt', 'utf-8');
var writeStream = fs.createWriteStream(__dirname + '/writeme.txt'); // 创建写入流
readStream.on('data', function(chunk){
writeStream.write(chunk); // 写入数据
});
执行 app.js,你会发现目录上多出一个 write.txt
的文件
node app
假如你对比之前讲过的 readFile
与 writeFile
方法,流
的方式分割文件的数据,通过每次一小部分数据填充到 Buffer 并在 Stream 中返回给我们,无需等待所有数据完全加载到内存中,因此流的方式效率会更高。
实际上这种读写流操作很常用,有一种比上方代码更快的处理数据读写的方式,叫做管道,下节课将讨论。
网友评论