Node.js fsPromises.utimes() 方法

2025年3月20日 | 阅读 4 分钟

Node.js 中的 fsPromises.utimes() 函数属于文件系统 fs 模块,位于 fs/promises API 中。这个 API 使开发人员能够使用 promises 来处理文件系统,从而辅助异步文件操作。fsPromises.utimes() 是一个用于更改文件、目录或符号链接的访问和修改时间的 函数。如果我们想以编程方式更新文件的时戳,它非常有用。

fsPromises.utimes()

fsPromises.utimes() 方法更改文件或目录的访问和修改时间。该方法更新与文件关联的两个时间戳:

  • tatime: 文件最后访问(读取或执行)的日期和时间。
  • mtime(修改时间): 指文件的最后修改时间,即其内容被更改的时间。

当我们更新这些时间戳时,我们并没有更改文件的内容,而是更改了记录文件何时被访问或修改的元数据。

语法

它具有以下语法:

参数

  • Path: 应该是一个字符串、Buffer 或 URL,用于指定需要更新时间戳的文件或目录的路径。
  • atime: 一个数字、Date 对象string,表示新的访问时间。它可以是秒(作为 Unix 时间戳)或 JavaScript Date 对象。
  • mtime: 它是一个数值或 Date 对象,甚至是字符串,表示新的修改时间,与 atime 参数类似。

返回值

一个 promise,一旦文件时间戳更新就解析,如果发生错误则拒绝。

示例

让我们举个例子来说明 Node.js fspromise.utimes() 函数。

输出

Node.js fsPromises.utimes() method
Node.js fsPromises.utimes() method

说明

例如,将访问时间设置为 2024 年 1 月 1 日,将修改时间设置为当前时间,将更新现有文件 example.txt 的时间戳。

参数详解

1. 路径

Path 参数可以提供多种格式

  • 字符串: 文件路径可以提供为字符串,例如 './myfile.txt' 或 'C:/myfolder/myfile.txt'。
  • Buffer: 也可以使用 Buffer 对象来表示文件路径。
  • URL: 我们可以使用 URL 对象来表示文件路径。在文件 URL 的情况下很有用。

2. 访问时间 (atime)

此指令设置文件的新访问时间。访问时间是记录文件上次访问时间的戳,例如读取和执行。它可以以各种格式提供

  • 数字: 自 1970 年 1 月 1 日(称为 Epoch)以来经过的秒数。
  • Date: JavaScript Date 对象。这种格式最易于人类阅读,因此,处理日期和时间很容易。
  • 字符串: 可以解析为 Date 的字符串;例如,字符串 "2024-01-01" 可以解析为有效的 Date 对象。3. 修改时间 (mtime)。

它设置文件的新修改时间。文件的修改时间是记录其内容上次更改时间的戳。它可以与 atime 相同,即 Unix 时间戳、JavaScript Date 对象或字符串。

fsPromises.utimes() 的用例

fsPromises.utimes() 函数有几个用例,如下所示:

1. 复制后保留原始文件的时戳。

我们可能希望保留文件的原始时间戳,以避免混淆文件是何时创建和最后修改的。使用 fsPromises.utimes() 复制文件后,我们可以恢复文件的访问和修改时间。

输出

Node.js fsPromises.utimes() method

模拟文件活动以进行测试

我们可以通过在测试期间以编程方式更新访问和修改时间来轻松模拟文件活动。当我们需要检查备份系统、版本控制流程或实际依赖文件时间戳的缓存失效机制时,这非常有用。

文件间时间戳对齐

如果我们正在处理一组需要具有相同思考和组织目的的文件,那么这很有用。fsPromises.times() 函数可以通过设置文件之间相同的时间和时间值来实现这一点,以便所有文件反映相同的元数据。

文件处理合规性标准

某些应用程序或工作流程要求文件具有特定的访问或修改时间。如果我们的软件受有关文件访问的某些法规要求,例如,它必须创建审计日志,则可以使用 fsPromises.times() 来实现合规性。