您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“在JavaScript中Node.js處理數(shù)據(jù)IO的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“在JavaScript中Node.js處理數(shù)據(jù)IO的方法是什么”吧!
在JavaScript中,對于字符串的操作已經(jīng)十分便捷,不存在二進制數(shù)據(jù)類型,這些對字符串的簡單操作和DOM操作基本上已經(jīng)可以滿足前端的需求了,但是Node.js中提供了處理文件和I/O的功能,因此需要處理大量的二進制數(shù)據(jù)。而在Node.js中Buffer和Stream文件流對二進制數(shù)據(jù)的處理提供了很好的支持
Buffer緩存區(qū)
Buffer類是隨著Node.js內(nèi)核一起發(fā)布的核心庫,用于支持I/O操作中移動的數(shù)據(jù)處理。Buffer類為Node.js提供了一種存儲原始數(shù)據(jù)的方法,該方法用來在內(nèi)存中創(chuàng)建一個專門存放二進制數(shù)據(jù)的緩存區(qū),也就是說預(yù)留了一定的存儲空間在內(nèi)存中,用來暫時保存輸入或者輸出的數(shù)據(jù),這樣Node.js也可以處理二進制數(shù)據(jù)
先說二進制,二進制是計算機技術(shù)中廣泛采用的一種數(shù)制,是用0和1兩個數(shù)碼來表示的數(shù)據(jù),由于計算機只能識別二進制數(shù)據(jù),而人們很難看懂那些0和1的組合代表什么,所以就需要將二進制數(shù)據(jù)轉(zhuǎn)換為人們能夠識別的字符,這就需要設(shè)置字符編碼,通過字符編碼找到相應(yīng)的字符集進行轉(zhuǎn)換,最遠書的字符編碼就是ASCII
再說Buffer的構(gòu)造函數(shù)
new Buffer(array)
new Buffer(size)
new Buffer(str[,encoding])
new Buffer(Buffer)
new Buffer(arrayBuffer)
可以看出,參數(shù)分別是字節(jié),數(shù)組,buffer對象,字符串等等
再比如寫入讀取的語法:
write(string[,offset[,length]][,encoding])
toString([encoding,state[,end]])
concat(list[,totallength])
Stream文件流
由于Buffer緩存區(qū)限制在1GB,超過1GB的文件無法直接完成讀寫,在讀寫大文件時,如果讀/寫資源一直持續(xù)不停,那么Node.js就無法繼續(xù)其他的工作,為此,Node.js提供了Stream文件流模塊
最理想的方法就是,讀一部分,寫一部分,不論文件的大小,只是時間的問題,總會處理完成,這就需要用到流的概念
文件A通過流動的形式通過數(shù)據(jù)流管道,進入文件B中,采用“讀一部分。寫一部分”的方式,流的好處就是,接收方可以提前處理,縮短時間,提高速度,就像在線看視頻,并不是全部緩存好了再播放,而是看一部分,緩存一部分
Stream四種流類型
Readable
Writable
Duplex
Transform
而在使用大文件復(fù)制時,通過可讀流的chunk參數(shù)傳遞數(shù)據(jù),chunk就像接數(shù)據(jù)的盆,在可讀流中還有一個函數(shù)叫pipe(),這個函數(shù)是一個很高效的文件處理方式,可以簡化之前復(fù)制文件的操作,所以,使用pipe進行完成數(shù)據(jù)的讀取和寫入也是很重要的
到此,相信大家對“在JavaScript中Node.js處理數(shù)據(jù)IO的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。