W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Buffer
類。緩沖區(qū)保存二進(jìn)制數(shù)據(jù),可以轉(zhuǎn)換為其他格式,在操作中用于文件寫入、拆分和重新組合。緩沖區(qū)的 length
屬性沒有返回內(nèi)容的大小,而是緩沖區(qū)本身的大??!要使用TCP流和文件系統(tǒng),開發(fā)人員添加了原生和快速支持來處理二進(jìn)制數(shù)據(jù)。開發(fā)人員使用Buffer類在Node.js中做到這一點(diǎn),它在全局可用。例如:
var b = new Buffer(10000);
var str = " ";
b.write(str); // default is utf8, which is what we want
console.log( b.length ); // will print 10000 still!
上面的代碼生成以下結(jié)果。
以下代碼返回byteLength:
var b = new Buffer(10000);
var str = " ";
b.write(str); // default is utf8, which is what we want
console.log( str.length ); // prints 5
console.log( Buffer.byteLength(str) ); // prints 15
上面的代碼生成以下結(jié)果。
Node.js支持所有流行的編碼格式,如ASCII,UTF-8和UTF-16。要將字符串轉(zhuǎn)換為緩沖區(qū),請(qǐng)調(diào)用Buffer類構(gòu)造函數(shù)傳遞字符串和編碼。
調(diào)用Buffer實(shí)例的toString方法,并傳遞一個(gè)編碼方案進(jìn)行轉(zhuǎn)換緩沖區(qū)為字符串。
// a string /*m.hgci.cn*/
var str = "Hello World from m.hgci.cn";
// From string to buffer
var buffer = new Buffer(str, "utf-8");
// From buffer to string
var roundTrip = buffer.toString("utf-8");
console.log(roundTrip); // Hello
要將緩沖區(qū)轉(zhuǎn)換為字符串,請(qǐng)使用toString方法。
var b = new Buffer(100);
var str = "this is a test";
b.write(str); // default is utf8, which is what we want
console.log(b.toString("utf8"));
要將一個(gè)緩沖區(qū)附加到另一個(gè)緩沖區(qū)的末尾,可以使用concat方法,如下所示:
var b1 = new Buffer("My name is ");
var b2 = new Buffer("m.hgci.cn");
var b3 = Buffer.concat([ b1, b2 ]);
console.log(b3.toString("utf8"));
上面的代碼生成以下結(jié)果。
我們可以使用 fill
方法填充緩沖區(qū)中的所有值,例如buf.fill(“\0")。buf.fill(“\\ 0")
是清零緩沖區(qū)。
以下代碼顯示如何創(chuàng)建Web服務(wù)器,使用節(jié)點(diǎn)緩沖區(qū)提供靜態(tài)內(nèi)容(HTML文件)。
function handle_incoming_request (req, res) {
if (req.method.toLowerCase() == "get" && req.url.substring(0, 9) == "/content/") {
serve_static_file(req.url.substring(9), res);
} else {/*from m.hgci.cn*/
res.writeHead(404, { "Content-Type" : "application/json" });
var out = { error: "not_found",message: """ + req.url + "" not found" };
res.end(JSON.stringify(out) + "\n");
}
}
function content_type_for_path (file) {
return "text/html";
}
var http = require("http"),
fs = require("fs");
var s = http.createServer(handle_incoming_request);
s.listen(8080);
使用以下HTML內(nèi)容創(chuàng)建名為 test.html
的文件。
m.hgci.cnHello World!
然后運(yùn)行服務(wù)器
node server.js
然后詢問test.html使用curl:curl -i -X GET http:// localhost:8080 / content / test.html
你應(yīng)該看到類似以下的輸出:
HTTP/1.1 200 OK Date: Mon, 26 Nov 2012 03:13:50 GMT Connection: keep-alive Transfer-Encoding: chunked m.hgci.cnHello World!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: