NSFileManager.attributesOfItemAtPath vs USURL.getResourceValue 文件大小和修改日期

NSFileManager.attributesOfItemAtPath vs USURL.getResourceValue for file size and modification date

我需要获取本地存储在 iOS(特别是临时目录)中的几个文件的大小和最后修改日期。该文件由 NSURL:

引用
let fileURL: NSURL = ...

我找到了两种方法:

NSFileManager.defaultManager().attributesOfItemAtPath(fileURL.path!)[NSFileSize]

var size: AnyObject?
fileURL.getResourceValue(&size, forKey: "NSURLFileSizeKey")

两者有什么区别?一个比另一个更高效吗?

一个走路径,一个走文件URL。根据您的开始方式,使用路径或 URL.

可能更好

有多种 NSFileManager 方法可让您枚举文件 URL 并预加载特定文件属性。如果您正在使用这些 API 之一,那么在 NSURL 上使用 getResourceValue 会更有效,因为数据已经就位。

NSURL getResourceValue 可能效率更高一点,因为 NSFileManager attributesOfItemAtPath 可能(也许?)预加载其所有文件属性,这比获取单个属性效率低。但这是一个实现细节。

归根结底,这是过早的优化。使用哪个更容易编写和维护。除非您有需要处理的性能问题,否则不要担心性能。