使用 Swift 获取最后一个目录中的文件名和完整目录路径

Posted

技术标签:

【中文标题】使用 Swift 获取最后一个目录中的文件名和完整目录路径【英文标题】:Get the name of file(s) within last directory and the full directory path using Swift 【发布时间】:2021-12-31 13:31:47 【问题描述】:

我正在尝试获取给定路径的最后一个目录中的文件名(JSON 格式,但保存时不带扩展名)。每个文件都在应用程序的数据容器中以自己唯一的子路径保存。

我还需要获取文件的完整路径,包括文件名。

根据我的阅读,我认为使用 URL 比使用字符串路径更好。

我已经尝试了以下代码:

do 
    let enumerator = FileManager.default.enumerator(at: filePath, includingPropertiesForKeys: nil)
    while let element = enumerator?.nextObject() as? URL 
    var nexObject = element.lastPathComponent
        print(nextObject)
    
 catch let error 
    print(error.localizedDescription)

这似乎会遍历路径的每个级别,直到结束。很好,但是除了连接上面的每个对象之外,获取完整路径(包括文件名)的最佳方法是什么?

所有建议都欣然接受。谢谢!

【问题讨论】:

不清楚是什么问题。您是丢弃 URL 并将其转换为 lastPathComponent 的人。如果您想要整个 URL,请不要这样做。 — 另外,请始终显示真实代码。将您的实际代码复制并粘贴到问题中。不要显示只是直接输入问题的废话。 会的,谢谢! 【参考方案1】:

由于element 是URL,如果您对完整路径名而不是last component 感兴趣,请选择:

    var nextObject = element.absoluteURL  // instead of .lastPathComponent

或者只是

    var nextObject = element.path  // or even relativePath 

【讨论】:

【参考方案2】:

谢谢你,@Christophe (+1)

我还发现 enumerator(at:includingPropertiesForKeys:options:errorHandler:) 的 documentation 提供了一个很好的示例,可以通过使用额外的 resource keys(例如名称、路径等)根据我的目的进行修改。

【讨论】:

以上是关于使用 Swift 获取最后一个目录中的文件名和完整目录路径的主要内容,如果未能解决你的问题,请参考以下文章