特定のパスがディレクトリであることを通知する関数を作成しようとしています。
var fs = require('fs');
console.log("+++++++++++++++++++++++++++++++++++++++");
fs.statSync(pathname, function(err, stats) {
console.log(stats.isDirectory());
});
console.log("+++++++++++++++++++++++++++++++++++++++");
ただし、回答が出力されることはありません。
パス名が存在する場合、関数は呼び出されません。存在しない場合は、例外が生成されます:ENOENT not a file or directory
。パス名が存在することは知りたくありませんが、ディレクトリかどうかは知りたいです。
誰かが私がそれを修正するのを手伝ってもらえますか?
コールバックを使用しない同期バージョンを使用しています。代わりに結果を返すだけです。したがって、非同期フォームfs.stat(path, callback)
を使用するか、次のような同期フォームを使用します。
var fs = require('fs');
console.log("+++++++++++++++++++++++++++++++++++++++");
var stats = fs.statSync(pathname);
console.log(stats.isDirectory());
console.log("+++++++++++++++++++++++++++++++++++++++");
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' }
はい、多くの要素は私たちにとって役に立たないことがよくあります。しかし、ここにこれらすべての変数の意味があります この記事によると :
nodeJSドキュメントによると のように、次のような詳細情報を取得することもできます。
stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isCharacterDevice()
stats.isFIFO()
stats.isSocket()
Stats.isSymbolicLink()については、fs.statとは別の関数fs.lstat()があり、それらの違いは次のとおりです。
stat
はシンボリックリンクに従います。シンボリックリンクであるパスが与えられると、シンボリックリンクのターゲットの統計を返します。lstat
はシンボリックリンクをたどりません。シンボリックリンクであるパスが与えられると、ターゲットではなくシンボリックリンクの統計を返します。