问题
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