Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs-如何更改文件的创建时间_Node.js_File_Last Modified - Fatal编程技术网

Node.js nodejs-如何更改文件的创建时间

Node.js nodejs-如何更改文件的创建时间,node.js,file,last-modified,Node.js,File,Last Modified,fsStat类实例返回mtime、atime和ctime日期对象,但似乎只有用于更改mtime和atime(我猜是最后一次修改和访问)的API。如何更改创建时间以创建文件的精确副本,因为它也会与原始文件同时创建?tl;tr:这是不可能的atm(Node.js目前节点本身不可能,但您可以使用(节点的本机附加组件)在Windows和Mac上更改文件的创建时间(akabtime)。如果您只想解决问题(更改文件创建时间),python中有一个解决方案,请参见此处:.将fs.utimes和fs.utime

fsStat类实例返回mtime、atime和ctime日期对象,但似乎只有用于更改mtime和atime(我猜是最后一次修改和访问)的API。如何更改创建时间以创建文件的精确副本,因为它也会与原始文件同时创建?

tl;tr:这是不可能的atm(Node.js目前节点本身不可能,但您可以使用(节点的本机附加组件)在Windows和Mac上更改文件的创建时间(aka
btime
)。

如果您只想解决问题(更改文件创建时间),python中有一个解决方案,请参见此处:.

fs.utimes
fs.utimesSync
方法内置到Node.js核心中。请参见

注:

该值应该是以秒为单位的Unix时间戳。例如,Date.now()返回毫秒,因此在传入之前应将其除以1000

要将JS日期对象转换为秒,请执行以下操作:

new Date().getTime()/1000|0

时间不是创造time@PA.感谢您的提及,我已经澄清了我的答案–至少在Windows上,
ctime
在撰写本文时被用作创建时间。它是Linux文件服务器,但它工作正常,实际上比我以前使用的bc更好,允许
未定义的
保持字段不变。在Linux上,设置
 btime
是不可操作的,但是如果提供的话,
mtime
atime
将在Linux上设置。嗯?为什么?我有btrfs RAID阵列,我想备份并能够还原低级文件元数据。这包括btime。btrfs文件系统上的节点stat返回
atime
mtime
ctime
birthtime
(虽然
出生时间和
ctime
是相同的)。我想更改它们。是的,我知道在UNIX中,ctime实际上不是文件创建时间,而是最后一次inode更新,但无论何时。只要我不使用硬链接,它就是创建时间。据我所知,Linux不支持
出生时间
的概念。没有Linux API可以获取或设置我所知道的
出生时间
。Linux fILE系统通常甚至没有一个字段来存储文件的
出生时间
(即使Linux有API来更改它)。Node在Linux上的
fs.stats
实例上引入了一个虚拟
出生时间
,它跟踪
ctime
(这是毫无意义的).Windows和Mac是支持
生日的系统。ext4和btrfs确实支持它,但它不完全是文件的生日,因为就像我说的,它是最后一个inode更改的日期,所以它会在创建文件的硬链接时更改。但是,只要没有inode更改,它将保留文件创建的日期。我检查了对它的节点支持,是的,
fs.statSync
返回的ctime是正确的,并且在硬链接创建后确实会更改。至少在节点v10.0之前,
fs.utimes
只更新
atime
mtime
,而不是OP想要的字段,即
出生时间。