这篇文章之前已经发过,但是使用的如下代码,后来又找到更好的解决方案,所以更新一下,推荐使用更新过的。
先看一下之前的版本,如下段所示:
/// (obsolete) 获取指定文件夹下的所有文件名
/// - parameter path: 文件夹路径
/// - returns: 所有文件名数组
static func findFiles(path: String) -> [String] {
var files = [String]()
let fileManager = NSFileManager.defaultManager()
let enumerator: NSDirectoryEnumerator = fileManager.enumeratorAtPath(path)!
while let element = enumerator.nextObject() as? String {
files.append(element)
}
return files
}
下面是更新过的,更新过的代码看起来更简洁,并且支持文件扩展名过滤:
/// (recommended) 获取指定文件夹下符合扩展名要求的所有文件名
/// - parameter path: 文件夹路径
/// - parameter filterTypes: 扩展名过滤类型(注:大小写敏感)
/// - returns: 所有文件名数组
static func findFiles(path: String, filterTypes: [String]) -> [String] {
do {
let files = try NSFileManager.defaultManager().contentsOfDirectoryAtPath(path)
if filterTypes.count == 0 {
return files
}
else {
let filteredfiles = NSArray(array: files).pathsMatchingExtensions(filterTypes)
return filteredfiles
}
}
catch {
return []
}
}
Swift Dev for MacOS
网友评论