Haskell Turtle库如何复制文件并保留原文件日期?
实现Turtle库复制文件时保留原日期
Turtle的cp函数默认不会保留文件的时间戳,要实现类似cp -p的效果,你需要在复制文件后手动同步原文件的访问时间和修改时间到新文件上。
可以通过以下代码实现:
import qualified Turtle as TU import Data.Time.Clock (UTCTime) -- 保留时间戳的文件复制函数 cpPreserveTimes :: FilePath -> FilePath -> IO () cpPreserveTimes oldname newname = do -- 先复制文件内容 TU.cp oldname newname -- 获取原文件的修改时间和访问时间 origModTime <- TU.getModificationTime oldname origAccessTime <- TU.getAccessTime oldname -- 将时间戳应用到新文件 TU.setModificationTime newname origModTime TU.setAccessTime newname origAccessTime
说明
TU.getModificationTime和TU.getAccessTime分别获取原文件的修改时间和访问时间TU.setModificationTime和TU.setAccessTime将获取到的时间戳设置到新复制的文件上- 如果你还需要保留文件权限,可以额外使用
TU.getPermissions和TU.setPermissions函数同步权限属性
内容的提问来源于stack exchange,提问作者halloleo
相关产品推荐
相关产品推荐

