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' }
很多元素对我们来说通常是无用的,是的。但这里是所有这些变量的含义,according to this article:
-
dev: 包含文件的设备 ID
-
模式:文件保护
-
nlink:文件的硬链接数
-
uid:文件所有者的用户 ID。
-
gid: 文件所有者的组 ID。
-
rdev: 如果文件是特殊文件,则为设备 ID。
-
blksize:文件系统 I/O 的块大小。
-
ino: 文件 inode 编号。 inode 是一种文件系统数据结构,用于存储有关文件的信息。
-
大小: 文件总大小(以字节为单位)。
-
blocks:为文件分配的块数。
-
atime: 表示文件最后访问时间的日期对象。
-
mtime: 表示文件最后修改时间的日期对象。
-
ctime: 表示文件的 inode 上次更改时间的日期对象。
您还可以像nodeJS documentation says 一样获取更多信息,例如:
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 不遵循符号链接。当给定一个符号链接的路径时,它返回符号链接的状态,而不是它的目标。