创建一个文件可读流

fs.createReadStream(path[, options])

常用可选配置:[, options]

image.png

返回值

Readable的子类ReadStream 通过这个子类可以注册监听事件

注册事件

注册事件需要通过Readable的子类ReadStream
rs.on(事件名, 事件处理函数)

常用事件

image.png方法

image.png

示例

  1. const path = require('path')
  2. const fs = require('fs')
  3. const fileName = path.resolve(__dirname, './1.txt');
  4. const re = fs.createReadStream(fileName, {
  5. encoding: 'utf-8', //编码格式
  6. autoClose: true, // 自动关闭
  7. highWaterMark: 1, //一次写入的字节数,默认是64kb
  8. // 一个字符等于三个字节
  9. })
  10. re.on('open', (res) => {re
  11. console.log('文件被打开啦');
  12. })
  13. re.on('error', () => {
  14. console.log('读取文件出错啦')
  15. })
  16. let str= '';
  17. re.on('data', trunk => {
  18. // 该事件注册过才会开始读取
  19. // 参数中是读取到字节,按照配置的编码格式
  20. // 每次读取的数据的大小取决于highWaterMark设置的值
  21. console.log(trunk, '读到的一部分数据')
  22. str += trunk; // 将读取的数据保存下来 如果不保存下来,就会用完就扔啦
  23. re.pause() // 暂停
  24. })
  25. re.on('pause', () => {
  26. console.log('暂停啦');
  27. setTimeout(() => {
  28. re.resume() //恢复
  29. }, 1000);
  30. })
  31. re.on('resume', () => {
  32. console.log('恢复了')
  33. })
  34. re.on('end', () => {
  35. // 在close之前触发
  36. console.log('全部数据读取完毕');
  37. })
  38. re.on('close', () => {
  39. // 在end之后触发
  40. console.log('文件关闭啦')
  41. console.log(str, '读取到的文件内容')
  42. })