nodejs api學習:fs.createReadStreame()

作用

這個api的作用是打開一個可讀的文件流並且返回一個fs.ReadStream對象

 

參數

/*
createReadStream(path,option):該用來打開一個可讀的文件流,它返回一個fs.ReadStream對象
@params:path指定文件的路徑
@params:options可選,是一個JS對象,可以指定一些選項如:
let option={
              flags: 'r',//指定用什麼模式打開文件,’w’代表寫,’r’代表讀,類似的還有’r+’、’w+’、’a’等
              encoding: 'utf8',//指定打開文件時使用編碼格式,默認就是“utf8”,你還可以爲它指定”ascii”或”base64”
              fd: null,//fd屬性默認爲null,當你指定了這個屬性時,createReadableStream會根據傳入的fd創建一個流,忽略path。另外你要是想讀取一個文件的特定區域,可以配置start、end屬性,指定起始和結束(包含在內)的字節偏移
              mode: 0666,
              autoClose: true//autoClose屬性爲true(默認行爲)時,當發生錯誤或文件讀取結束時會自動關閉文件描述符
          }

*/

 

返回對象

既然它有返回值並且返回一個對象,那我們不妨用個變量來接收這個值,並打印出來看看是個什麼東西:

返回對象包含一大堆屬性,有興趣的朋友可以去深究一下

ReadStream {
  _readableState:
   ReadableState {
     objectMode: false,
     highWaterMark: 65536,
     buffer: BufferList { head: null, tail: null, length: 0 },
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: null,
     ended: false,
     endEmitted: false,
     reading: false,
     sync: true,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     resumeScheduled: false,
     destroyed: false,
     defaultEncoding: 'utf8',
     awaitDrain: 0,
     readingMore: false,
     decoder:
      StringDecoder {
        encoding: 'utf8',
        fillLast: [Function: utf8FillLast],
        lastNeed: 0,
        lastTotal: 0,
        lastChar: <Buffer 00 00 00 00> },
     encoding: 'utf8' },
  readable: true,
  domain: null,
  _events: { end: [Function] },
  _eventsCount: 1,
  _maxListeners: undefined,
  path: './test/b.js',
  fd: null,
  flags: 'r',
  mode: 438,
  start: undefined,
  end: undefined,
  autoClose: true,
  pos: undefined,
  bytesRead: 0 }

常用方法

既然該函數的作用是用來打開一個可讀的文件流那麼我就通過寫個demo來測試一下它的作用,並講講該函數的常用方法


const fs=require('fs');
const path=require('path');
let readStream=fs.createReadStream('./test/b.js',{encoding:'utf8'});
//console.log(readStream);

//讀取文件發生錯誤事件
readStream.on('error', (err) => {
    console.log('發生異常:', err);
});
//已打開要讀取的文件事件
readStream.on('open', (fd) => {
    console.log('文件已打開:', fd);
});
//文件已經就位,可用於讀取事件
readStream.on('ready', () => {
    console.log('文件已準備好..');
});

//文件讀取中事件·····
readStream.on('data', (chunk) => {
    console.log('讀取文件數據:', chunk);
});

//文件讀取完成事件
readStream.on('end', () => {
    console.log('讀取已完成..');
});

//文件已關閉事件
readStream.on('close', () => {
    console.log('文件已關閉!');
});

效果:

 

接下來我們隨便寫一個找不到的文件路徑用來測試一下error事件:

返回值如下,把error打印出來了:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章