Node.jsのバッファとフローモジュールの詳細を紹介します.node.js


バッファモジュール
jsは最初はブラウザのために設計されていますので、unicodeコードの文字列をうまく処理できますが、バイナリデータをうまく処理できません.これはノード.jsの問題であり、ノード.jsはネットワーク上で送信および受信を目的としており、しばしばバイナリ形式で送信されるデータである.たとえば:
 - TCP接続によってデータを送受信する. - 画像または圧縮ファイルからバイナリデータを読み出します. - ファイルシステムからデータを読み、書きます. - ネットワークからのバイナリデータストリームを処理します.
BufferモジュールはNode.jsのために元のデータを格納する方法を持ってきましたので、jsのコンテキストでバイナリデータを使用することができます.Node.jsでI/O操作で移動するデータを処理する必要があるたびに、Bufferモジュールが使用される可能性があります.
クラス:Buffer
Bufferクラスは、2進データを直接処理するグローバル変数タイプです.いろいろな方法で構築できます.
元のデータはBufferクラスの例に保存される.Bufferの例は、整数配列と類似している.
1.new Buffer:新しいブザーサイズを割り当てるのは、sizeの8バイトです.  2.new Buffer(array):新しいブザーを割り当てて8ビットのバイトarray配列を使う.  3.new Buffer(str,encoding):encoding Steringタイプ-どんな符号化方式を使うか、パラメータは選択できます.
4.クラス方法:Buffer.isEnccoding:与えられたエンコーディングが有効であれば、trueに戻ります.そうでなければfalseに戻ります.  5.種類の方法:Buffer.isBuffer(obj):このObjがBufferであるかどうかをテストします.Boolean 6に戻ります.種類の方法:Buffer.co ncat(list,total Length):list{Arry}配列タイプ、Buffer配列、接続されます.totallength{Number}タイプ上述のBuffer配列の全てのBufferの合計サイズ.ファイルがBufferによって得られた例を読み取ることができるほか、直接的に構成することができる.
 
   
var bin = new Buffer([ 0x48, 0x65, 0x6c, 0x6c, 0x6c ]);
Bufferは文字列と同様に、レングス属性でバイト長を得ることができるほか、指定された位置のバイトを[index]方式で読み出すことができる.
 
   
bin[0]; // => 0x48;
Bufferと文字列は互いに変換することができ、例えば指定符号化を使用してバイナリデータを文字列に変換することができる.
 
   
var str = bin.toString('utf-8'); // => "hello"
slice方法は、新しいBufferを返すのではなく、元のBufferの中間にある位置を指すポインタを返すようにしています.
 
   
1.[ 0x48, 0x65, 0x6c, 0x6c, 0x6c ]
2.    ^           ^
3.    |           |
4.   bin     bin.slice(2)
バッファに書き込み
 
   
var buffer = new Buffer(8);// 8
console.log(buffer.write('a','utf8'));// 1
これはバッファに文字「a」を書き込みます.コード化された後、バッファに書き込まれたバイトの数をnodeが返します.ここでは、アルファベットaのutf-8符号は1バイトを占めます.
バッファをコピー
Node.jsは、Bufferオブジェクト全体のコンテンツを他のBufferオブジェクトにコピーする方法を提供する.私たちは既存のBufferオブジェクトの間でしかコピーできないので、それらを作成しなければなりません.
 
   
buffer.copy(bufferToCopyTo)
その中で、バッファerオブジェクトをコピーするのが目的です.以下の例を示します
 
   
var buffer1 = new Buffer(8);
buffer1.write('nice to meet u','utf8');
var buffer2 = new Buffer(8);
buffer1.copy(buffer2);
console.log(buffer2.toString());//nice to meet u
フローモジュール
UNIXタイプのオペレーティングシステムでは、流れは標準的な概念です.次の三つの主要な流れがあります.
1.標準入力2.標準出力3.標準エラー
読み取り可能なストリーム
バッファ領域がNode.jsで元のデータを処理する方式であるとすると、ストリームは通常Node.jsでデータを移動する方式である.ノード.jsのストリームは読み取り可能または書き込み可能である.Node.jsの多くのモジュールは、HTTPとファイルシステムを含むストリームを使用している.
classit.txtのファイルを作成し、名前リストを読み込んで、これらのデータを使うと仮定します.データがストリームであるため、これはファイルの読み込みを完了する前に、最初の数バイトを受信してから、データに対して動作することができるということです.これはNode.jsの一般的なパターンです.
 
   
var fs = require('fs');
var stream = fs.ReadStream('classmates.txt');
stream.setEncoding('utf8');
stream.on('data', function (chunk) {
    console.log('read some data')
});
stream.on('close', function () {
    console.log('all the data is read')
});
以上の例では、新規データを受信するとイベントデータがトリガされる.ファイルの読み込みが完了すると、イベントのクローズがトリガされます.
書き込み可能ストリーム
もちろん、データを書くために書き込み可能なストリームを作成することもできます.これは、簡単なスクリプトがあれば、ファイルを読み込んで別のファイルに書き込むことができるという意味です.
 
   
var fs = require('fs');
var readableStream = fs.ReadStream('classmates.txt');
var writableStream = fs.writeStream('names.txt');
readableStream.setEncoding('utf8');
readableStream.on('data', function (chunk) {
    writableStream.write(chunk);
});
readableStream.on('close', function () {
    writableStream.end();
});
現在、データイベントを受信すると、書き込み可能ストリームにデータが書き込まれます.
readable.set Enccoding:戻る:this
readable.reume():同上.この方法は、読み取り可能なストリームにdataイベントをトリガし続ける.
readable.pause():同上.この方法は、フローモードにあるフロー停止トリガdataイベントを非流動モードに切り替え、後続の利用可能なデータを内部バッファに残します.  クラス:stream.Writable
Writable(書き込み可能)ストリームインターフェースは、ターゲットにデータを書き込み中の抽象的なものです.
1.writable.write(chunk、[encoding]、[calback]):
chunk{String_Buffer}書き込むデータencoding{String}符号化であれば、chunkが文字列calback{Function}データブロック書き込み後のコールバックであれば、{Boolean}データが全部処理されているならtrue.
この方法は下のシステムにデータを書き込み、データが処理された後に与えられたコールバックを呼び出す.
2.writable.co rk():すべての書き込みを強制滞留させる.
滞留するデータは.uncork()または.end()呼び出し時に書き込まれます.
3.writable.end([chunk],[encoding],[calback])
chunk{String buffer}オプションで、書き込むデータencoding{String}符号化は、chunkが文字列calback{Function}の場合は、ストリーム終了後のコールend()を呼び出した後にエラーが発生します.
 
   
// 'hello, ' 'world!'
http.createServer(function (req, res) {
  res.write('hello, ');
  res.end('world!');
  //
});
以上は雲栖コミュニティの小編が心を込めて準備した内容で、雲栖コミュニティのブログ、問答、公衆番号、人物、課程などの欄にもある関連内容で、引き続き右上隅検索ボタンを使ってnode.jsを検索してください.バッファモジュールnodejsバッファエリア、centos 7はnode詳細、nodejs requestモジュール、nodejs fsモジュール、nodejsモジュールをインストールしてください.より多くの関連知識を得るために.