reader.md

2018-11-22 18:03 更新

ngui/reader

這里提供的方法可以針對不協(xié)議的uri路徑進行基本的讀取操作

現(xiàn)在支持的路徑類型:

  • http:// or https:// - 可使用同步或異步方式進行讀取,但不能讀取目錄或測試存在, readdirSync()返回空數組而isFileSync()永遠返回false。

  • file:// 本地文件路徑。/var/data or var/data 都可做為本地路徑,并不會出錯。

  • zip:// 這是zip包內路徑的一種表示方法,zip:///var/data/test.zip@a.txt 這個路徑表示zip:///var/data/test.zip中的a.txt文件。注意這個路徑一定要存在于本地文件系統(tǒng)中

Object: StreamData

讀取文件流時返回的結構類型, 這是個Object類型描述并沒有實際存在的構造函數

StreamData.data

  • {Buffer} 當前讀取到的Buffer數據

StreamData.complete

  • {bool} 讀取是否完成

StreamData.size

  • {uint} 已經讀取到的數據總量

StreamData.total

  • {uint} 全部數據源的總大小,有可能是0,為0表示數據大小未知,可能為無限大比如為視頻直播數據流

readStream(path[,cb])

異步讀取文件流,并返回中止id

通過中止id可強制取消當前的讀取任務

成功后通過回調返回StreamData類型數據

Callback: cb(data) (data:StreamData)

  • @arg path {String} 要讀取的文件路徑
  • @arg [cb] {Function}
  • @ret {uint} return abort id

read(path[,cb])

異步讀取文件,并返回中止id,通過中止id可強制取消當前的讀取任務

成功后通過回調返回Buffer數據

Callback: cb(data) (data:Buffer)

Example:

// async read file stream 
reader.readStream('http://www.baidu.com', function(d){ }));
reader.readStream('file:///var/data/test.txt', function(d){ }));
reader.readStream('zip:///var/data/test.zip@aa.txt', function(d){ 
    /*Success*/ 
    console.log(d.data.length, d.complete);
}));


// async read file
reader.read('http://www.baidu.com', function(d){ }));
reader.read('file:///var/data/test.txt', function(d){ }));
reader.read('zip:///var/data/test.zip@aa.txt', function(d){ 
    /*Success*/ 
    console.log(d.length);
}.catch(e=>{ /*Fail*/ }));

readSync(path)

同步讀取文件,成功返回文件Buffer失敗會拋出異常

readdirSync(path)

讀取目錄列表信息,返回DirentArray

這個方法不能處理http://https://類型的路徑,如果傳入這種路徑立即返回一個空數組Array

這個方法也不會拋出異常,如果不能讀取路徑,只會返回空數組Array

existsSync(path)

測試文件或目錄是否存在,如果文件存在會返回false

這個方法不能處理http://https://類型的路徑,如果傳入這種路徑立即返回false

isFileSync(path)

測試文件是否存在

isDirectorySync(path)

測試目錄是否存在

abort(id)

通過id中止異步任務,與fs.abort功能相同

  • @arg id {uint} 傳入的中止id

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號