fs.stat() はどのように機能しますか?
コールバック/非同期 fs 関数を使用する場合は、同期バージョンを使用せず、 fs.stat() を使用してください。
var fs = require('fs');
console.log("+++++++++++++++++++++++++++++++++++++++");
fs.stat(pathname, function(err, stats) {
console.log(stats.isDirectory());
});
console.log("+++++++++++++++++++++++++++++++++++++++");
fs.stat()に関する詳細情報があります。メイン オブジェクトに関する多くの情報を取得できます。
fs.stat(path, function(err, stats) {
console.log(stats)
}
出力:
{ dev: 2049,
ino: 305352,
mode: 16877,
nlink: 12,
uid: 1000,
gid: 1000,
rdev: 0,
size: 4096,
blksize: 4096,
blocks: 8,
atime: '2009-06-29T11:11:55Z',
mtime: '2009-06-29T11:11:40Z',
ctime: '2009-06-29T11:11:40Z' }
多くの要素は、私たちにとって役に立たないことがよくあります。しかし、この記事によると、これらすべての変数の意味は次のとおりです。
- dev:ファイルを含むデバイスの ID
- モード:ファイル保護
- nlink:ファイルへのハードリンクの数
- uid:ファイルの所有者のユーザー ID。
- gid:ファイルの所有者のグループ ID。
- rdev:ファイルが特殊ファイルの場合のデバイス ID。
- blksize:ファイル システム I/O のブロック サイズ。
- ino:ファイルの inode 番号。inode は、ファイルに関する情報を格納するファイル システムのデータ構造です。
- size:ファイルの合計サイズ (バイト単位)。
- blocks:ファイルに割り当てられたブロックの数。
- atime:ファイルの最終アクセス時刻を表す日付オブジェクト。
- mtime:ファイルの最終変更時刻を表す日付オブジェクト。
- ctime:ファイルの inode が最後に変更された時刻を表す日付オブジェクト。
また、 nodeJS のドキュメントにあるように、次のような詳細情報を取得することもできます。
stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isCharacterDevice()
stats.isFIFO()
stats.isSocket()
stats.isSymbolicLink() については、fs.lstat() と呼ばれる fs.stat 以外の関数があり、それらの違いは次のとおりです。
stat
シンボリックリンクに従います。シンボリックリンクであるパスを指定すると、シンボリックリンクのターゲットの統計を返します。
lstat
シンボリックリンクをたどりません。シンボリックリンクであるパスを指定すると、ターゲットではなくシンボリックリンクの統計を返します。