仅获取 url 个没有目录的文件
Get only url of files without directories
如何在 URL 中获取 URL 个文件?
我试过这些:
directoryContents = try FileManager.default.contentsOfDirectory(at: aURL, includingPropertiesForKeys: [URLResourceKey.isRegularFileKey], options: [])
和
...contentsOfDirectory(at: aURL, includingPropertiesForKeys: nil, options: []).filter{ [=12=].isFileURL })
两个结果都等于
...contentsOfDirectory(at: aURL, includingPropertiesForKeys: nil, options: [])
那个 return 文件和文件夹列表,它得到的列表没有任何过滤器和选项。
我也尝试通过 URLResourceKey.isDirectoryKey
获取目录,但没有成功。
如何获取 URL 个没有目录的文件?
出于性能原因,includingPropertiesForKeys
在遍历目录时确实会从 url 中检索指定键的信息,这不是筛选条件。
您必须 filter
通过 isDirectory
值
显式地显示结果
let directoryContents = try FileManager.default.contentsOfDirectory(at: aURL, includingPropertiesForKeys: [.isDirectoryKey])
let filesOnly = directoryContents.filter { (url) -> Bool in
do {
let resourceValues = try url.resourceValues(forKeys: [.isDirectoryKey])
return !resourceValues.isDirectory!
} catch { return false }
}
print(filesOnly.count)
或者在 macOS 10.11+、iOS 9.0+ 和 hasDirectoryPath
let directoryContents = try FileManager.default.contentsOfDirectory(at: aURL, includingPropertiesForKeys: nil)
let filesOnly = directoryContents.filter { ![=11=].hasDirectoryPath }
print(filesOnly.count)
我认为:
var urls = try! FileManager.default.contentsOfDirectory(at: localDocumentsURL, includingPropertiesForKeys: nil, options: [])
urls = urls.filter { [=10=].isFileURL }
对于 iOS 来说,这是一个足够好的解决方案,在某些情况下,应用程序控制存储在与应用程序相关的沙箱目录中的内容。
如何在 URL 中获取 URL 个文件?
我试过这些:
directoryContents = try FileManager.default.contentsOfDirectory(at: aURL, includingPropertiesForKeys: [URLResourceKey.isRegularFileKey], options: [])
和
...contentsOfDirectory(at: aURL, includingPropertiesForKeys: nil, options: []).filter{ [=12=].isFileURL })
两个结果都等于
...contentsOfDirectory(at: aURL, includingPropertiesForKeys: nil, options: [])
那个 return 文件和文件夹列表,它得到的列表没有任何过滤器和选项。
我也尝试通过 URLResourceKey.isDirectoryKey
获取目录,但没有成功。
如何获取 URL 个没有目录的文件?
includingPropertiesForKeys
在遍历目录时确实会从 url 中检索指定键的信息,这不是筛选条件。
您必须 filter
通过 isDirectory
值
let directoryContents = try FileManager.default.contentsOfDirectory(at: aURL, includingPropertiesForKeys: [.isDirectoryKey])
let filesOnly = directoryContents.filter { (url) -> Bool in
do {
let resourceValues = try url.resourceValues(forKeys: [.isDirectoryKey])
return !resourceValues.isDirectory!
} catch { return false }
}
print(filesOnly.count)
或者在 macOS 10.11+、iOS 9.0+ 和 hasDirectoryPath
let directoryContents = try FileManager.default.contentsOfDirectory(at: aURL, includingPropertiesForKeys: nil)
let filesOnly = directoryContents.filter { ![=11=].hasDirectoryPath }
print(filesOnly.count)
我认为:
var urls = try! FileManager.default.contentsOfDirectory(at: localDocumentsURL, includingPropertiesForKeys: nil, options: [])
urls = urls.filter { [=10=].isFileURL }
对于 iOS 来说,这是一个足够好的解决方案,在某些情况下,应用程序控制存储在与应用程序相关的沙箱目录中的内容。