Node.js stats.mtimeNs 属性

2025 年 5 月 7 日 | 阅读 4 分钟

在本文中,我们将讨论 Node.js 的 stats.mtimeNs 属性,包括其语法、参数和示例。

什么是 Node.js stats.mtimeNs 属性?

stats.mtimeNs 属性是 Node.js fs.Stats 类的一个内置 API 功能,它提供了文件最后修改时间的高精度时间戳。此属性返回以纳秒为单位的时间戳,即自 POSIX 纪元(1970年1月1日 00:00:00 UTC)以来经过的时间。它提供了比传统的 mtime 属性(以秒为单位返回时间)更精确的计时信息。

当系统需要以纳秒精度比较或存储时间戳,或者当应用程序需要在更精细的级别上跟踪文件修改时,mtimeNs 值特别有用。它在性能敏感的应用中也很有用,因为在这些应用中,即使是微小的修改时间差异也可能产生重大影响。

mtimeNs 能够实现纳秒级精度(仅在支持它的平台如 Linux 上可用),这对于处理高频文件操作的现代应用程序来说可能是一个显著的优势。要获取此值,请使用 fs.statSync() 或 fs.stat() 函数获取一个 fs.Stats 对象,然后利用 mtimeNs 属性以纳秒为单位获取修改时间戳。

语法

它具有以下语法。

  • 参数: mtimeNs 属性不需要任何参数。为了以 BigInt 形式获取时间戳,我们必须在使用 fs.statSync() 或 fs.stat() 创建 stats 对象时,将 { bigint: true } 作为一个选项传入。
  • 返回值: 它返回一个 BigInt 值(在某些情况下是 number),表示自 POSIX 纪元以来,文件的最新修改时间戳(以纳秒为单位)。

示例 1

让我们通过一个例子来说明 Node.js 的 stats.mtimeNs 属性。

输出

 
Directory Modification Time (in NS) using stat: 1735625834527486026n   

说明

这个 Node.js 程序使用 stats.mtimeNs 属性,通过 fs 模块检索并显示一个目录和多个文件的最后修改时间(以纳秒为单位)。其中,fs.stat() 用于目录,而 fs.lstat() 用于文件。它检查了当前目录(./)、一个文件(./filename.txt)和另一个目录(./anotherDirectory)的修改时间戳。此外,如果指定的文件或目录无法访问,它会优雅地处理不存在的文件,并报告一条错误消息。对于每个操作,程序都会确保检测并记录错误。

示例 2

让我们通过一个例子来说明 Node.js 的 stats.mtimeNs 属性。

输出

 
Error: File or directory not found: ./filename.txt
Non-existent file check: File not found: ./nonexistent.txt   

说明

这个 Node.js 程序展示了如何使用 stats.mtimeNs 属性以纳秒为单位检索文件或目录的最后修改时间。它使用带有 { bigint: true } 选项的 fs.stat() 方法来检索文件 (filename.txt) 和目录 (exampleDirectory) 的修改时间戳。程序会比较它们的日志和时间戳,以判断哪个更新得更近。它还能优雅地处理错误,例如当文件或目录不存在时,并为缺失的资源或其他意外问题提供清晰的错误消息。