📜  Node.js fs.statSync() 方法(1)

📅  最后修改于: 2023-12-03 15:03:12.927000             🧑  作者: Mango

Node.js fs.statSync() 方法

在 Node.js 中,fs.statSync() 方法用于同步地检索文件或目录的状态信息。它返回包含文件/目录元数据的 fs.Stats 对象。

语法
const fs = require('fs');

const stats = fs.statSync(path);
参数
  • path: 字符串,文件/目录的路径。
返回值

fs.statSync() 方法返回一个 fs.Stats 对象,其中包含文件/目录的元数据信息。具体包含哪些信息可以参考文末的 fs.Stats 对象属性列表。

抛出的异常

如果 fs.statSync() 方法在读取文件状态信息时遇到错误,它可能会抛出以下错误之一:

  • EACCES:拒绝访问(权限不足)
  • ENOENT:找不到文件或目录
  • EMFILE:打开的文件数过多
示例
const fs = require('fs');

const path = './file.txt';
const stats = fs.statSync(path);

console.log(stats.isDirectory()); // false
console.log(stats.isFile()); // true
console.log(stats.size); // 1024
console.log(stats.atime); // 2021-08-01T08:28:00.000Z
console.log(stats.mtime); // 2021-08-01T08:30:00.000Z
console.log(stats.birthtime); // 2021-08-01T08:15:00.000Z

以上示例输出了文件的一些元数据信息,如文件类型、文件大小、文件的最后访问时间、修改时间和创建时间等。

fs.Stats 对象属性列表

| 属性 | 类型 | 描述 | | ------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | dev | number | 文件/目录所在设备的 ID | | ino | number | 文件/目录的 i-node 节点的 ID | | mode | number | 文件/目录的权限和类型,包含 S_IFMT 位掩码:S_IFIFO、S_IFCHR、S_IFDIR、S_IFBLK、S_IFREG、S_IFLNK、S_IFSOCK 等。详见 Node.js 官方文档。 | | nlink | number | 文件/目录的硬链接数量 | | uid | number | 文件/目录的 owner 的 ID | | gid | number | 文件/目录的 group 的 ID | | rdev | number | 如果文件/目录是特殊文件(如字符设备或块设备文件),则该属性将包含所需的主、从设备编号 | | size | number | 文件/目录的大小(字节数) | | blksize | number | 分配给文件/目录的文件系统块大小 | | blocks | number | 实际分配给文件/目录的文件系统块数,与 blksize 属性相关 | | atimeMs | number | 文件/目录的最后访问时间(毫秒值) | | mtimeMs | number | 文件/目录的修改时间(毫秒值) | | ctimeMs | number | 文件/目录的更改时间(毫秒值),通常指文件/目录的 i-node 节点更改时间,类似于 mtimeMs 属性。当修改文件内容时也会更新此时间 | | birthtimeMs | number | 文件/目录的创建时间(毫秒值) | | atime | Date | 文件/目录的最后访问时间(Date 类型) | | mtime | Date | 文件/目录的修改时间(Date 类型) | | ctime | Date | 文件/目录的更改时间(Date 类型),通常指文件/目录的 i-node 节点更改时间,类似于 mtime 属性。当修改文件内容时也会更新此时间 | | birthtime | Date | 文件/目录的创建时间(Date 类型) | | isFile() | Function | 返回 true,如果文件是普通的文件。 | | isDirectory()| Function | 返回 true,如果文件是目录。 | | isBlockDevice()| Function| 返回 true,如果文件是块设备文件。 | | isCharacterDevice()| Function| 返回 true,如果文件是字符设备文件。 | | isSymbolicLink()| Function | 返回 true,如果文件是符号链接。 | | isFIFO() | Function | 返回 true,如果文件是命名管道。 | | isSocket() | Function | 返回 true,如果文件是 Unix 套接字。 |

以上属性中,以 Ms 结尾的属性返回时间的毫秒值,而不是 Date 类型。建议根据具体需求选择合适的属性使用。