You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取指定文件夹中Zip文件的创建日期与时间?

读取文件夹中Zip文件的创建与修改时间

我来帮你解决这个问题!你之前遇到的问题主要是没有给file.info()提供完整的文件路径,导致它找不到对应的Zip文件,所以返回了NA。咱们一步步来修正:

问题根源

  • 你用list.files("C:/Users/foo ", pattern=".zip")只得到了Zip文件的文件名,但file.info()需要完整的文件路径才能定位到文件,直接传文件名的话,它会在当前工作目录查找,自然找不到目标文件,所以返回NA。
  • 而file.info("C:/Users/foo/")$mt读取的是文件夹本身的修改时间,不是里面文件的时间,这也不是你想要的结果。

正确解决方案

方法1:用基础R实现(Windows优先)

核心是给list.files()加上full.names = TRUE参数,获取带完整路径的Zip文件列表:

# 定义目标文件夹路径
target_folder <- "C:/Users/foo/"

# 获取所有Zip文件的完整路径(注意pattern要用转义的\\.zip$,避免匹配到名字里带zip的非Zip文件)
zip_full_paths <- list.files(
  path = target_folder,
  pattern = "\\.zip$",
  full.names = TRUE,
  recursive = FALSE  # 如果不需要遍历子文件夹,保持FALSE;需要的话设为TRUE
)

# 读取文件信息
zip_file_info <- file.info(zip_full_paths)

# 提取你需要的时间:
# - Windows系统中,ctime是文件的创建时间
# - mtime是文件的最后修改时间
creation_times <- zip_file_info$ctime
modification_times <- zip_file_info$mtime

# 查看结果
print(creation_times)

方法2:用fs包实现(跨平台更可靠)

如果你的代码需要在Windows、macOS或Linux上都能正确获取创建时间,推荐使用fs包,它对跨平台的文件属性支持更友好:

# 先安装fs包(如果没装过)
# install.packages("fs")

library(fs)

target_folder <- "C:/Users/foo/"

# 获取Zip文件的完整路径
zip_full_paths <- dir_ls(
  path = target_folder,
  regexp = "\\.zip$",
  recurse = FALSE
)

# 读取文件信息,birth_time就是跨平台的创建时间
zip_fs_info <- file_info(zip_full_paths)
creation_times_cross <- zip_fs_info$birth_time
modification_times_cross <- zip_fs_info$modification_time

# 查看结果
print(creation_times_cross)

注意事项

  • 正则表达式\\.zip$确保只匹配以.zip结尾的文件,避免误匹配比如test.zip.txt这类文件。
  • Windows系统的file.info()中,ctime代表创建时间,但在Linux/macOS中,ctime是文件状态改变时间,不是创建时间,这时候用fs包的birth_time更准确。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:44:56