Get Subdirectories using Swift

送分小仙女□ 提交于 2019-11-26 21:41:47

问题


I'm trying to get ONLY subdirectories. Here's my data structure.

root/

  • a/
    • 1.txt
    • 2.txt
  • b/
    • 3.txt
    • 4.txt

I want to get directories in a specific folder(root). I use enumerator in root file path:

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

However, It will iterate every files in root. How can I get just subdirectories (a&b) ?


回答1:


There is no need to use a deep enumeration. Just get contentsOfDirectoryAtURL and filter the urls returned which are directories.

Xcode 8.2.1 • Swift 3.0.2

extension URL {
    var isDirectory: Bool {
        return (try? resourceValues(forKeys: [.isDirectoryKey]))?.isDirectory == true
    }
    var subDirectories: [URL] {
        guard isDirectory else { return [] }
        return (try? FileManager.default.contentsOfDirectory(at: self, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]).filter{ $0.isDirectory }) ?? []
    }
}

usage:

let documentsDirectoryURL =  try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)

let subDirs = documentsDirectoryURL.subDirectories


来源:https://stackoverflow.com/questions/34388582/get-subdirectories-using-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!