Node.js ファイルの状態
すべてのファイルには、Node.js を使用して調べることができる一連の詳細情報が付随しています。特に、fs モジュールが提供する stat() メソッドを使用します。
ファイルパスを渡して呼び出すと、Node.js はファイルの詳細を取得し、渡されたコールバック関数を2つのパラメータ(エラーメッセージとファイルの状態)とともに呼び出します。
const = ('node:fs');
.('/Users/joe/test.txt', (, ) => {
if () {
.();
}
// we have access to the file stats in `stats`
});
Node.js は、ファイルの状態が準備できるまでスレッドをブロックする同期メソッドも提供しています。
const = ('node:fs');
try {
const = .('/Users/joe/test.txt');
} catch () {
.();
}
ファイル情報は stats 変数に含まれています。stats を使ってどのような情報を抽出できるでしょうか?
以下を含む、多くの情報があります。
stats.isFile()とstats.isDirectory()を使用して、ファイルがディレクトリかファイルかを確認stats.isSymbolicLink()を使用して、ファイルがシンボリックリンクかどうかを確認stats.sizeを使用して、ファイルサイズをバイト単位で取得
他にも高度なメソッドはありますが、日常のプログラミングで使う大部分はこれらです。
const = ('node:fs');
.('/Users/joe/test.txt', (, ) => {
if () {
.();
return;
}
.(); // true
.(); // false
.(); // false
.(.); // 1024000 //= 1MB
});
必要であれば、fs/promises モジュールが提供する Promise ベースの fsPromises.stat() メソッドを使用することもできます。
const = ('node:fs/promises');
async function () {
try {
const = await .('/Users/joe/test.txt');
.(); // true
.(); // false
.(); // false
.(.); // 1024000 //= 1MB
} catch () {
.();
}
}
();
fs モジュールについての詳細は、公式ドキュメントで読むことができます。