node.js(九)
4975 ワード
Node.js Buffer(バッファ)JavaScript言語自体は文字列データタイプのみで、バイナリデータタイプはありません.ただし、TCPフローやファイルフローのような処理には、バイナリデータが必要です.したがって、Node.jsでは、バイナリデータを専門に保存するキャッシュエリアを作成するためにBufferクラスが定義されている.Node.jsでは、Buffer類はNodeカーネルとともに発行されるコアライブラリです.BufferライブラリはNode.jsのために元のデータを格納する方法を持ってきました.Node.jsにバイナリデータを処理させることができます.Node.jsでI/O操作で移動するデータを処理する必要があるたびに、Bufferライブラリを使用することができます.元のデータはBufferクラスの例に格納される.一つのBufferは整数配列と似ていますが、V 8メモリ以外の元のメモリに対応しています.Bufferクラスを作成するNode Bufferクラスは、様々な方法で作成できます.方法1は、長さ10バイトのバッファerの例を作成する.
var buf = new Buffer(10);
方法2は、所与の配列によってバッファerのインスタンスを作成する.var buf = new Buffer([10, 20, 30, 40, 50]);
方法3は、文字列を通してバッファerのインスタンスを作成する.var buf = new Buffer("www.runoob.com", "utf-8");
utf-8はデフォルトの符号化方式であり、また、「ascii」、「utf 8」、「utf 16 le」、「ucs 2」、「base 64」、「hex」も同様にサポートされています.バッファに書き込む文法ノドバッファの文法は以下の通りです.buf.write(string[, offset[, length]][, encoding])
パラメータの説明は以下の通りです.string-バッファに書き込む文字列です.offset-バッファが書き込みを開始するインデックス値は、デフォルトでは0です.length-書き込みのバイト数は、デフォルトはbuffer.length encoding-使用する符号化です.デフォルトは'utf 8'です.戻り値は実際の書き込みのサイズを返します.ブザーのスペースが足りない場合は、一部の文字列だけを書き込みます.実例buf = new Buffer(256);
len = buf.write("www.runoob.com");
console.log(" : "+ len);
以上のコードを実行し、出力結果は以下の通りです.$node main.js
: 14
バッファからデータシンタックスを読み出し、Nodeバッファデータを読み出すシンタックスは以下の通りです.buf.toString([encoding[, start[, end]]])
パラメータの説明は以下の通りです.encoding-使用するコードです.デフォルトは'utf 8'です.start-読み出し開始インデックス位置を指定し、デフォルトは0です.end-終了位置は、デフォルトではバッファの最後となります.値復号バッファデータを返し、指定された符号化を使って文字列を返します.実例buf = new Buffer(26);
for (var i = 0 ; i < 26 ; i++) {
buf[i] = i + 97;
}
console.log( buf.toString('ascii')); // : abcdefghijklmnopqrstuvwxyz
console.log( buf.toString('ascii',0,5)); // : abcde
console.log( buf.toString('utf8',0,5)); // : abcde
console.log( buf.toString(undefined,0,5)); // 'utf8' , : abcde
以上のコードを実行し、出力結果は以下の通りです.$ node main.js
abcdefghijklmnopqrstuvwxyz
abcde
abcde
abcde
BufferをJSONオブジェクトに変換する文法では、Node BufferをJSONオブジェクトの関数文法形式に変換します.buf.toJSON()
は、JSONオブジェクトに戻ります.実例var buf = new Buffer('www.runoob.com');
var json = buf.toJSON(buf);
console.log(json);
以上のコードを実行し、出力結果は以下の通りです.[ 119, 119, 119, 46, 114, 117, 110, 111, 111, 98, 46, 99, 111, 109 ]
バッファマージ文法Nodeバッファマージの文法は以下の通りです.Buffer.concat(list[, totalLength])
パラメータの記述は以下の通りである.リストリストは、リストを統合するためのBufferオブジェクト配列のリストである.totallength-統合後のBufferオブジェクトの全体長を指定します.戻り値は、複数のメンバが統合された新しいBufferオブジェクトを返します.実例var buffer1 = new Buffer(' ');
var buffer2 = new Buffer('www.baidu.com');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 : " + buffer3.toString());
以上のコードを実行し、出力結果は以下の通りです.buffer3 : www.baidu.com
バッファ比較文法Node Buffer比較の関数文法は、Node.js v 0.2.2バージョンに導入されています.buf.compare(otherBuffer);
パラメータの記述は、他のBufferオブジェクトと比較して、other Bufferオブジェクトです.戻り値は、1つの数字を返します.それは、bufがother Bufferの前にあるか、または同じ後にあるかを表します.実例var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);
if(result < 0) {
console.log(buffer1 + " " + buffer2 + " ");
}else if(result == 0){
console.log(buffer1 + " " + buffer2 + " ");
}else {
console.log(buffer1 + " " + buffer2 + " ");
}
以上のコードを実行し、出力結果は以下の通りです.ABC ABCD
コピーバッファシンタックスNodeバッファコピーシンタックスは、以下のように示しています.buf.co py(taget Buffer、taget Start[、sourceStart])パラメータは、以下のように記述されています.target Start-数字、オプション、デフォルト:0 sourceStart-数字、オプション、デフォルト:0 sourceEnd-数字、オプション、デフォルト:buffer.length戻り値が戻りません.実例var buffer1 = new Buffer('ABC');
//
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());
以上のコードを実行し、出力結果は以下の通りです.buffer2 content: ABC
バッファカットNodeバッファリングの文法は以下の通りです.buf.slice([start[, end]])
パラメータの説明は以下の通りです.start-数字、オプション、デフォルト:0 end-数字、オプション、デフォルト:buffer.length戻り値は新しいバッファを返します.これは古いバッファと同じブロックメモリを指しますが、インデックスstartからendまでの位置を切ります.実例var buffer1 = new Buffer('runoob');
//
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString());
以上のコードを実行し、出力結果は以下の通りです.buffer2 content: ru
バッファ長さ文法Nodeバッファ長さ計算文法は以下の通りです.buf.length;
戻り値は、Bufferオブジェクトが占有するメモリ長を返します.実例var buffer = new Buffer('www.runoob.com');
//
console.log("buffer length: " + buffer.length);
以上のコードを実行し、出力結果は以下の通りです.buffer length: 14