几个重要概念,完全是自己的理解。
文件流操作。具体来讲就是用createReadStream来代替readFile,这样做的原因就是读文件时先要读入缓冲区buffer,如果文件过大那么需要的缓冲去也就很大,所以用stream 来代替 。stream大概的工作原理是分成小块,然后传输。
Stream: 单词意思是流的意思。
file=createReadStream(“path”);
创建一个createStream对象---》》》该对象用于读取文件---》》》该对象可以绑定的事件---》》》
---------------------------------------------------------
@@@事件
readable:党可以从流中读取数据时触发,具体不知道。
data:!!!重要 参数为存放了已读取的数据的缓冲区对象或字符串。当读取来自文件、客户端、服务器等对对象的新数据时触发。
end: 读取数据完成后触发,不会触发data 事件
error:你懂得。
close:读取数据对象关闭时触发。
@@@方法
read():读取数据;
setEncoding:编码方式;
src.pipe(dst):设置一个数据通道,将读取到的数据传输到另一个对象中;
-------------------------------------------------------
var file=require("fs"); var filestream=file.createReadStream('test.txt'); var out=file.createWriteStream("test2.txt"); //console.log(out); filestream.on("data",function(data){ //console.log(data.toString()); out.write(data); });
运行这段代码会将test2覆盖为test1;
思考如何解决?!!
file对象的方法:
pipe(),pipe表面意思是管道的意思。由于有时需要读写的文件非常大,不能全部读入内存,这样便可以createReadStream()来创造一个流式服务,然后再使用pipe()方法读出 pipe(res)
src.pipe(dst) 可读流src 到输出可写流dst。
感觉一般是当复制来用的。