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
可能(也许?)预加载其所有文件属性,这比获取单个属性效率低。但这是一个实现细节。
归根结底,这是过早的优化。使用哪个更容易编写和维护。除非您有需要处理的性能问题,否则不要担心性能。
我需要获取本地存储在 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
可能(也许?)预加载其所有文件属性,这比获取单个属性效率低。但这是一个实现细节。
归根结底,这是过早的优化。使用哪个更容易编写和维护。除非您有需要处理的性能问题,否则不要担心性能。