Node.js處理資料IO
在JavaScript中,對於字串的操作已經十分便捷,不存在二進位制資料型別,這些對字串的簡單操作和DOM操作基本上已經可以滿足前端的需求了,但是Node.js中提供了處理檔案和I/O的功能,因此需要處理大量的二進位制資料。而在Node.js中Buffer和Stream檔案流對二進位制資料的處理提供了很好的支援
Buffer快取區
Buffer類是隨著Node.js核心一起釋出的核心庫,用於支援I/O操作中移動的資料處理。Buffer類為Node.js提供了一種儲存原始資料的方法,該方法用來在記憶體中建立一個專門存放二進位制資料的快取區,也就是說預留了一定的儲存空間在記憶體中,用來暫時儲存輸入或者輸出的資料,這樣Node.js也可以處理二進位制資料
先說 二進位制,二進位制是計算機技術中廣泛採用的一種數制,是用0和1兩個數碼來表示的資料,由於計算機只能識別二進位制資料,而人們很難看懂那些0和1的組合代表什麼,所以就需要將二進位制資料轉換為人們能夠識別的字元,這就需要設定字元編碼,透過字元編碼找到相應的字符集進行轉換,最遠書的字元編碼就是ASCII
再說 Buffer的建構函式
-
new Buffer(array)
-
new Buffer(size)
-
new Buffer (str[,encoding])
-
new Buffer (Buffer)
-
new Buffer (arrayBuffer)
可以看出,引數分別是位元組,陣列,buffer物件,字串等等
再比如 寫入讀取的語法:
-
write(string[,offset[,length]][,encoding])
-
toString([encoding,state[,end]])
-
concat(list[,totallength])
Stream檔案流
由於Buffer快取區限制在1GB,超過1GB的檔案無法直接完成讀寫,在讀寫大檔案時,如果讀/寫資源一直持續不停,那麼Node.js就無法繼續其他的工作,為此,Node.js提供了Stream檔案流模組
最理想的方法就是,讀一部分,寫一部分,不論檔案的大小,只是時間的問題,總會處理完成,這就需要用到流的概念
檔案A透過流動的形式透過資料流管道,進入檔案B中,採用“讀一部分。寫一部分”的方式,流的好處就是,接收方可以提前處理,縮短時間,提高速度,就像線上看影片,並不是全部快取好了再播放,而是看一部分,快取一部分
Stream四種流型別
-
Readable
-
Writable
-
Duplex
-
Transform
而在使用大檔案複製時,透過可讀流的chunk引數傳遞資料,chunk就像接資料的盆,在可讀流中還有一個函式叫 pipe(),這個函式是一個很高效的檔案處理方式,可以簡化之前複製檔案的操作,所以,使用pipe進行完成資料的讀取和寫入也是很重要的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2684621/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IO處理執行緒執行緒
- Python資料處理(二):處理 Excel 資料PythonExcel
- 使用Slonik框架基於Node.js和PostgreSQL處理大量資料框架Node.jsSQL
- 資料處理
- 系統表空間IO錯誤 資料損壞處理一則
- 資料預處理
- javascript - 資料處理JavaScript
- Excel 資料處理Excel
- 海量資料處理
- Panda資料處理
- 處理百萬級以上的資料處理
- 資料清洗和資料處理
- 資料預處理-資料清理
- 資料分析--資料預處理
- Node.js處理國際化Node.js
- Node.js之異常處理Node.js
- 資料協議處理、影片協議處理、電氣IO量處理、嵌入式SCADA系統工業控制閘道器設計協議
- 資料預處理-資料歸約
- 資料預處理–資料降維
- 資料預處理 demo
- 海量資料處理2
- 請求資料處理
- python 處理資料Python
- springmvc 資料處理SpringMVC
- 流資料處理利器
- R缺失資料處理
- 處理JSON資料JSON
- iOS空資料處理iOS
- 資料流處理命令
- 海量資料處理 (轉)
- 雨滴譜資料處理
- Netty(二):如何處理io請求?Netty
- 資料處理之去除重複資料
- Python資料處理(一):處理 JSON、XML、CSV 三種格式資料PythonJSONXML
- 資料清洗處理-常用操作
- 資料處理及跳轉
- 處理恢復資料方法
- nlp 中文資料預處理