溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在JavaScript中Node.js處理數(shù)據(jù)IO的方法是什么

發(fā)布時間:2021-11-04 16:33:30 來源:億速云 閱讀:182 作者:iii 欄目:web開發(fā)

本篇內(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í)!

向AI問一下細節(jié)

免責(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)容。

AI