我正在尝试获取一个[String]
,其中包含我在文档目录中创建的文件夹中所有文件夹的名称。我目前有一些工作,但它也迭代这些目录中的所有内容,并给我文件的名称。
目前我有这个:
let file_manager = NSFileManager.defaultManager()
let enumerator:NSDirectoryEnumerator? = file_manager.enumeratorAtPath(getDocumentsFilePath("Test"))
while let element = enumerator?.nextObject() as? String
{
// Add folder names to the return value
return_value.insert(element, atIndex: return_value.count)
}
但正如我所说,这也是给我目录中文件的名称。
我发现这个代码似乎是我正在寻找的,但它似乎可以解决NSParentSearchPathDirectory,但这似乎会给我文件目录中的所有目录名称。想知道这是否是我正在寻找的,但如果是这样,我怎样才能将我的字符串(我想要目录名的文件夹的路径)转换为NSParentSearchPathDirectory。或者,如果我的第一个例子是正确的,我将如何只返回目录而不是文件名。
NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
答案 0 :(得分:4)
这是一个简单的函数,可用于获取特定目录中所有内容的路径。
func contentsOfDirectoryAtPath(path: String) -> [String]? {
guard let paths = try? NSFileManager.defaultManager().contentsOfDirectoryAtPath(path) else { return nil}
return paths.map { aContent in (path as NSString).stringByAppendingPathComponent(aContent)}
}
let searchPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last!
let allContents = contentsOfDirectoryAtPath(searchPath)
答案 1 :(得分:0)
在Swift 4.0中
func contentsOfDirectoryAtPath(path: String) -> [String]? {
guard let paths = try? FileManager.default.contentsOfDirectory(atPath: path) else { return nil}
return paths.map { aContent in (path as NSString).appendingPathComponent(aContent)}
}
func getListOfDirectories()->[String]?{
let searchPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last!
let allContents = contentsOfDirectoryAtPath(path: searchPath)
return allContents
}