Cocoa / Swift:遍历路径中文件夹的名称

时间:2015-01-25 15:44:33

标签: cocoa swift nsfilemanager

我目前正在用swift编写一个os x应用程序,但我无法想象如何循环甚至获取某个路径上所有文件夹的名称。也许有fm.enumeratorAtPath的东西?

1 个答案:

答案 0 :(得分:6)

我使用enumeratorAtURL。下面是一些代码,显示了如何在用户主目录中打印目录的示例。

if let dirURL = NSURL(fileURLWithPath: NSHomeDirectory()) {
    let keys = [NSURLIsDirectoryKey, NSURLLocalizedNameKey]
    let fileManager = NSFileManager.defaultManager()
    let enumerator = fileManager.enumeratorAtURL(
        dirURL,
        includingPropertiesForKeys: keys,
        options: (NSDirectoryEnumerationOptions.SkipsPackageDescendants |
            NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants |
            NSDirectoryEnumerationOptions.SkipsHiddenFiles),
        errorHandler: {(url, error) -> Bool in
            return true
        }
    )
    while let element = enumerator?.nextObject() as? NSURL {
        var getter: AnyObject?
        element.getResourceValue(&getter, forKey: NSURLIsDirectoryKey, error: nil)
        let isDirectory = getter! as Bool
        element.getResourceValue(&getter, forKey: NSURLLocalizedNameKey, error: nil)
        let itemName = getter! as String
        if isDirectory {
            println("\(itemName) is a directory in \(dirURL.absoluteString)")
            //do something with element here.
        }
    }
}