gpt4 book ai didi

swift - 目录文件夹中的文件日期

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:25 24 4
gpt4 key购买 nike

如何从目录中的每个文件中获取日期?

let directoryContent = try fileManager.contentsOfDirectory(atPath: directoryURL.path)

这就是我从目录中获取文件的方式。我找到了一些方法:

directoryContent.Contains(...)

数据早于几天的文件 - 我该如何检查它?

然后;

let fileAttributes = try fileManager.attributesOfItem(atPath: directoryURL.path)

它将给我目录中的最后一个文件。

这将以字节为单位返回日期:

for var i in 0..<directoryContent.count {
let date = directoryContent.index(after: i).description.data(using: String.Encoding.utf8)!
print(date)
}

哪一个是从所有文件中获取日期或检查目录是否包含早于 X 时间的特定日期的最佳方法。

提前致谢!

最佳答案

强烈推荐使用FileManagerURL相关API,以非常高效的方式获取文件属性。

此代码打印创建日期早于一周前的指定目录的所有 URL。

let calendar = Calendar.current
let aWeekAgo = calendar.date(byAdding: .day, value: -7, to: Date())!

do {
let directoryContent = try fileManager.contentsOfDirectory(at: directoryURL, includingPropertiesForKeys: [.creationDateKey], options: .skipsHiddenFiles)
for url in directoryContent {
let resources = try url.resourceValues(forKeys: [.creationDateKey])
let creationDate = resources.creationDate!
if creationDate < aWeekAgo {
print(url)
// do somthing with the found files
}
}
}
catch {
print(error)
}

如果您想要更好地控制工作流,例如 URL 无效并且您想要打印错误的 URL 和相关的错误但继续使用枚举器处理其他 URL,则语法非常相似:

do {
let enumerator = fileManager.enumerator(at: directoryURL, includingPropertiesForKeys: [.creationDateKey], options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles], errorHandler: { (url, error) -> Bool in
print("An error \(error) occurred at \(url)")
return true
})
while let url = enumerator?.nextObject() as? URL {
let resources = try url.resourceValues(forKeys: [.creationDateKey])
let creationDate = resources.creationDate!
if creationDate < last7Days {
print(url)
// do somthing with the found files
}
}

}
catch {
print(error)
}

关于swift - 目录文件夹中的文件日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com