How fs.stat() works ?
If you want to use a callback/async fs function, don't use the synchronous version, use fs.stat() :
var fs = require('fs');
console.log("+++++++++++++++++++++++++++++++++++++++");
fs.stat(pathname, function(err, stats) {
console.log(stats.isDirectory());
});
console.log("+++++++++++++++++++++++++++++++++++++++");
There is more information about fs.stat(). You can get a lot of information about the main object :
fs.stat(path, function(err, stats) {
console.log(stats)
}
Output :
{ 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' }
Lots of elements is often useless for us, yes. But here is the signification of all of these variables, according to this article :
- dev: ID of the device containing the file
- mode: file protection
- nlink: number of hard links to the file
- uid: user ID of the file’s owner.
- gid: group ID of the file’s owner.
- rdev: device ID if the file is a special file.
- blksize: block size for file system I/O.
- ino: File inode number. An inode is a file system data structure that stores information about a file.
- size: file total size in bytes.
- blocks: number of blocks allocated for the file.
- atime: date object representing the file’s last access time.
- mtime: date object representing the file’s last modification time.
- ctime: date object representing the last time the file’s inode was changed.
You can also, like nodeJS documentation says, get more information like :
stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isCharacterDevice()
stats.isFIFO()
stats.isSocket()
About stats.isSymbolicLink(), there is another function than fs.stat, called fs.lstat(), and here is the difference between them :
stat
follows symlinks. When given a path that is a symlink, it returns the stat of the target of the symlink.
lstat
doesn't follow symlinks. When given a path that is a symlink it returns the stat of the symlink and not its target.