【Node.js24.x】Object::writev()メソッドの使い方
writevメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
writevメソッドは、複数のバッファに格納されたデータを一度に効率的に書き込むことを実行するメソッドです。これは、Node.jsの入出力操作において、特にネットワークソケットやファイルストリームに対して、複数の不連続なデータチャンク(断片)を単一の操作として処理する際に利用されます。
このメソッドを使用することで、システムが繰り返し呼び出されるI/O操作のオーバーヘッドを削減し、アプリケーションの全体的なパフォーマンスを向上させることが可能です。例えば、HTTPレスポンスのヘッダとボディ、またはファイルのメタデータと実際のコンテンツなど、複数の異なる情報がそれぞれ別のバッファに存在する場合でも、writevメソッドを使うことでそれらをまとめて、指定された宛先(例えばソケットやファイルディスクリプタ)へ順序通りに書き出すことができます。
writevメソッドは通常、書き込み対象となるストリームオブジェクトやファイルディスクリプタと、書き込みたいデータを含むバッファの配列を引数として受け取ります。Node.jsの他の多くのI/O操作と同様に非同期で動作するため、書き込み処理が完了した後に結果を受け取るためのコールバック関数やPromiseを併用することが一般的です。これにより、アプリケーションのメインスレッドをブロックすることなく、バックグラウンドで効率的なデータ転送を実現します。
構文(syntax)
1const fs = require('node:fs'); 2 3const fileDescriptor = 1; // 例: 標準出力 4const dataBuffers = [ 5 Buffer.from('Hello, Node.js '), 6 Buffer.from('writev example!') 7]; 8 9fs.writev(fileDescriptor, dataBuffers, (error) => { 10 // エラーハンドリングや書き込み完了後の処理はここで行われます 11});
引数(parameters)
fd, buffers, position, callback
- fd: file descriptor: 書き込み対象となるファイルディスクリプタを指定する数値
- buffers: Buffer[]: 書き込むデータを含むBufferオブジェクトの配列
- position: number | null: 書き込みを開始する位置を指定する数値。nullの場合は現在のファイルポインタ位置から書き込みます。
- callback: (err: Error | null, written: number, buffers: Buffer[]) => void: 書き込み完了後に実行されるコールバック関数。errはエラーオブジェクト、writtenは書き込んだバイト数、buffersは書き込まれなかったBufferオブジェクトの配列です。
戻り値(return)
戻り値なし
戻り値はありません