nodejs中一般读取或写入时用的是fs.readFile()或fs.writeFile()。但是在读取或写入大文件时,因为文件过大不能一次性读完或写完 ,那么就引入了流的概念(Stream)。
Stream流,像漏的瓶子中流下的水一样,流出的水就是正在操作的内容,而瓶中的水没有操作。
Stream流使用需要引入文件系统(File System)。
var fs=require("fs"), //导入文件系统(File System)
rs=fs.createReadStream("f:/test.txt"), //创建读取流,参数为要读取内容的文件,这里使用的是绝对路径, ./表示当前路径 ,../表示上层路径。读取的内容以buffer形式存放
ws=fs.createWriteStream("f:/result.txt"); //创建可写流,参数为写入的文件名,如果文件不存在则创建文件,如果存在则覆盖源文件的内容
前期的准备完成之后,我们写一个函数来获取文件内容
var data=Buffer.form(''), //创建一个buffer用于存储读取完的信息
buffers=[], //创建一个数组,用于存储每一个流读取的信息
nread=0; //用于记录读取全部内容的长度
function getContent(rs,callback){ //传入参数为:读取流,回调函数
rs.on("data",function(chuck){ //给rs绑定data事件,用于按流读取文件内容
buffers.push(chuck); //把读取到的buffer存入数组中
nread+=chuck.length; //记录读取文件