node.js--Buffer(緩沖區(qū))&&同步文件寫入&&異步文件的寫入

一、Buffer(緩沖區(qū))

buffer的簡(jiǎn)介:

1、Buffer的結(jié)構(gòu)和數(shù)組很像,操作的方法也和數(shù)組類似。
2、數(shù)組中不能存儲(chǔ)二進(jìn)制的文件,而Buffer就是專門用來存儲(chǔ)二進(jìn)制數(shù)據(jù)。
3、使用Buffer不需要引入模塊,直接使用即可。
4、在Bufferr中存儲(chǔ)的數(shù)據(jù)都是二進(jìn)制數(shù)據(jù),但是在顯示的時(shí)候都是以16進(jìn)制的形式顯示的。
(1)、buffer中的每一個(gè)元素的范圍是從 00-ff 0-255 00000000-11111111
(2)、計(jì)算機(jī)中一個(gè)0或是一個(gè)1 我們稱之為1位(bit)
  • 8bit=1byte(字節(jié):傳輸過程中最小單位是字節(jié))
  • 1024byte=1kb
  • 1024kb=1mb
  • 1024mb=1gb
  • 1024gb=1tb
    1個(gè)英文字符就是一個(gè)字節(jié),一個(gè)漢字三個(gè)字節(jié)。
(3)、Buffer中的一個(gè)元素,占用內(nèi)存的一個(gè)字節(jié)。
(4)、Buffer的大小一旦確定,則不能修改。Buffer實(shí)際上是對(duì)底層內(nèi)存的直接操作。
var str= "Hello Buffer"
//將一個(gè)字符串保存到buffer中
var buf=Buffer.from(str)
console.log(buf.length); //占用內(nèi)存的大小
console.log(str.length)//字符串的長(zhǎng)度

保存到buffer中Buffer.from()

創(chuàng)建一個(gè)指定大小的buffer的幾種方式
(1)、Buffer.alloc()

分配空間的時(shí)候,數(shù)據(jù)也清空了。

buffer的所有構(gòu)造函數(shù)都是不推薦使用的。已經(jīng)廢棄了。
//第一種方式:
var buf2=new Buffer(10); //10個(gè)字節(jié)的buffer
//第二種方法
var buf3=Buffer.alloc(10);
//通過索引,來操作buf中的元素
buf[2]=88
只要數(shù)字在控制臺(tái)或者頁面中輸出一定是10進(jìn)制。
(2)、Buffer.allocUnsafe()

buffer中可能含有敏感數(shù)據(jù)。分配空間的時(shí)候,未清空數(shù)據(jù)??赡軙?huì)有安全隱患。但是性能較好。

要是想讓緩沖區(qū)的數(shù)據(jù)轉(zhuǎn)換成字符串的話 使用tostring

二、fs(文件系統(tǒng):File System)

文件系統(tǒng)的作用:

1、通過node來操作系統(tǒng)中的文件。
2、文件系統(tǒng)的使用:
(1)、先引入fs模塊。fs是核心模塊,直接引入不需要下載。
var fs = require("fs")
(2)、fs模塊中所有的操作都有兩種形式可供選擇。(同步和異步)
  • 同步文件系統(tǒng):

會(huì)阻塞程序的執(zhí)行,也就是除非操作完畢,否則不會(huì)往下執(zhí)行代碼。直接rerturn

  • 異步文件系統(tǒng):

不會(huì)阻塞程序的執(zhí)行,而是在操作完成時(shí),通過回調(diào)函數(shù)將結(jié)果返回。(都會(huì)有回調(diào)函數(shù))通過回調(diào)函數(shù)返回結(jié)果

3、文件的寫入:

同步文件的寫入

(1)、打開文件(同步):

fs.openSync ( path, flags [ ,mode ] )

  • path:要打開的文件的路徑。
  • flags:要打開文件要做的類型。 r:可讀的。w:可寫的。
  • mode:設(shè)置文件的操作權(quán)限,一般不傳。
    返回結(jié)果
  • 該方法會(huì)返回一個(gè)文件的描述符作為結(jié)果,我們可以通過該描述符來對(duì)文件進(jìn)行各種操作。
(2)、寫入文件:

fs.writeSync(fd,string [ , postion [ , encoding ] ])

  • fd:文件的描述符,需要傳遞要寫入的文件的描述符。
  • string:要寫入的內(nèi)容。
  • postion:寫入的起始位置,一般不傳。
  • encoding:寫入的編碼。默認(rèn)是utf-8一般不傳。
(3)、關(guān)閉文件

fs.closeSync(fd)

  • fd:要關(guān)閉的文件的描述符。
//引入文件
var fs = require("fs")
//打開文件
var fd = fs.openSync("hello.txt","w")
//向文件內(nèi)寫入內(nèi)容
fs.writeSync(fd,"傳入的內(nèi)容")
//關(guān)閉文件
fs.closeSync(fd)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容