仅获取 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 来说,这是一个足够好的解决方案,在某些情况下,应用程序控制存储在与应用程序相关的沙箱目录中的内容。