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