面试题答案
一键面试主要区别
- 可读流(Readable Stream):用于从源读取数据,例如从文件读取数据。它的数据流向是从数据源到应用程序。
- 可写流(Writable Stream):用于向目标写入数据,比如向文件写入数据。数据流向是从应用程序到数据宿。
- 双工流(Duplex Stream):同时具备可读流和可写流的功能,既可以读取数据也可以写入数据,像网络套接字(TCP socket),既能发送数据也能接收数据。
- 转换流(Transform Stream):是双工流的一种特殊类型,在读写过程中对数据进行转换。例如在处理文件时,可以在读取文件内容后对其进行加密再写入,在这个过程中对数据进行了转换操作。
可读流和可写流进行文件复制操作示例
const fs = require('fs');
const readableStream = fs.createReadStream('source.txt');
const writableStream = fs.createWriteStream('destination.txt');
readableStream.on('error', (err) => {
console.error('读取文件出错:', err);
});
writableStream.on('error', (err) => {
console.error('写入文件出错:', err);
});
readableStream.pipe(writableStream);
在上述代码中,首先通过fs.createReadStream
创建了一个可读流,用于读取source.txt
文件的内容。然后通过fs.createWriteStream
创建了一个可写流,用于将数据写入destination.txt
文件。接着为可读流和可写流分别添加了error
事件的监听,以便在读取或写入文件出错时能够捕获并处理错误。最后,使用pipe
方法将可读流和可写流连接起来,实现文件内容从源文件到目标文件的复制。