使用 Swift 获取子目录

Get Subdirectories using Swift

我试图只获取子目录。这是我的数据结构。

根/

我想获取特定文件夹(根)中的目录。我在根文件路径中使用枚举器:

let enumerator = NSFileManager.defaultManager().enumeratorAtPath(filePath)
for element in enumerator! {
   print(element)
}

但是,它会遍历根目录中的每个文件。我怎样才能得到子目录 (a&b) ?

没有必要使用深度枚举。只需获取 contentsOfDirectoryAtURL 并过滤返回的 url,即目录。

Xcode 11.4• Swift 5.2

extension URL {
    func subDirectories() throws -> [URL] {
        // @available(macOS 10.11, iOS 9.0, *)
        guard hasDirectoryPath else { return [] }
        return try FileManager.default.contentsOfDirectory(at: self, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]).filter(\.hasDirectoryPath)
    }
}

用法:

 do {
    let documentsDirectory =  try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let url = documentsDirectory.appendingPathComponent("pictures", isDirectory: true)
    if !FileManager.default.fileExists(atPath: url.path) {
        try FileManager.default.createDirectory(at: url, withIntermediateDirectories: false, attributes: nil)
    }
    let subDirs = try documentsDirectory.subDirectories()
    print("sub directories", subDirs)
    subDirs.forEach { print([=11=].lastPathComponent) }
} catch {
    print(error)
}