【Node.js24.x】Object::writevSync()メソッドの使い方
writevSyncメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
writevSyncメソッドは、Node.jsにおいて、複数のバッファの内容をまとめて指定されたファイルディスクリプタに同期的に書き込むメソッドです。このメソッドは、複数の小さなデータチャンクを一度の操作で効率的に書き出すことを目的としています。
具体的には、書き込みたいデータを格納した複数のBufferオブジェクトの配列を受け取り、それらの内容を順番に、オープンされているファイルやソケットなどのI/Oリソースを示すファイルディスクリプタへ出力します。同期処理であるため、このメソッドが呼び出されると、書き込み処理が完了するまでプログラムの実行は一時停止(ブロック)されます。これにより、コードの記述はシンプルになりますが、I/O処理に時間がかかる場合、アプリケーション全体の応答性が低下する可能性があるため注意が必要です。
writevSyncは、システムコールレベルで複数の書き込みを効率的に処理します。個別のデータをそれぞれ同期書き込みメソッドで書き込むよりも、writevSyncを用いて一度に書き込む方が、システムコールオーバーヘッドを削減し、パフォーマンスを向上させることが期待できます。例えば、HTTPレスポンスのヘッダとボディを異なるバッファで管理している場合に、これらをまとめてネットワークに送信する際などに利用されます。戻り値として、実際に書き込まれたバイト数の合計を返します。長時間の書き込み操作には非同期版のwritevが推奨されます。
構文(syntax)
1const fs = require('node:fs'); 2 3const fd = fs.openSync('output.txt', 'w'); 4const buffer1 = Buffer.from('First part of data. '); 5const buffer2 = Buffer.from('Second part of data.'); 6const buffers = [buffer1, buffer2]; 7 8try { 9 fs.writevSync(fd, buffers); 10} finally { 11 fs.closeSync(fd); 12}
引数(parameters)
fd, buffers, position
- fd: number: 書き込み対象のファイルディスクリプタ
- buffers: ReadonlyArray<Uint8Array | string | DataView | ArrayBuffer>: 書き込むデータを含むバッファの配列
- position: number: ファイル内の書き込みを開始する位置
戻り値(return)
number
writevSyncメソッドは、指定された複数のBufferオブジェクトまたはUint8Arrayオブジェクトの内容を、同期的にファイルディスクリプタに書き込みます。このメソッドは、実際に書き込まれたバイト数を数値で返します。