【Node.js24.x】Object::fsync()メソッドの使い方
fsyncメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
fsyncメソッドは、指定されたファイルディスクリプタに関連付けられたファイルデータを、オペレーティングシステムのキャッシュから物理ストレージデバイスへ確実に書き込む操作を実行するメソッドです。通常、アプリケーションがファイルにデータを書き込んでも、すぐに物理ディスクに保存されるわけではありません。多くのオペレーティングシステムでは、書き込み処理の効率を高めるために、データを一度メモリ上のバッファ(キャッシュ)に蓄え、まとめてディスクに書き込む仕組みを採用しています。
このバッファリングはパフォーマンス向上に寄与しますが、システムクラッシュや予期せぬ電源喪失が発生した場合、バッファ内の未保存データが失われるリスクがあります。fsyncメソッドは、このようなデータ損失のリスクを回避するために、指定されたファイルディスクリプタが指すファイルのすべての変更(データ本体およびファイルサイズや更新時刻などのメタデータ)を強制的にストレージに同期させます。
このため、データベースシステムにおけるトランザクションコミット時や、ジャーナリングファイルシステムでのジャーナル更新時、あるいは非常に重要な設定ファイルの保存時など、データの完全性と永続性が極めて重要となる場面でfsyncメソッドが利用されます。ただし、物理ストレージへの書き込みはI/O処理を伴うため、このメソッドの呼び出しは処理に時間がかかり、アプリケーションのパフォーマンスに影響を与える可能性があることを理解しておく必要があります。
構文(syntax)
1import { open } from 'node:fs/promises'; 2 3const filehandle = await open('data.txt', 'w'); 4// ファイルへの書き込み操作などが行われた後 5await filehandle.fsync(); 6filehandle.close();
引数(parameters)
fd, callback
- fd: FileDescriptor: ファイルディスクリプタ。同期したいファイルを表す番号です。
- callback: Function: fsync操作が完了した後に呼び出される関数。エラーがあれば第一引数に、なければnullが渡されます。
戻り値(return)
戻り値なし
戻り値はありません