You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ZipFoundation获取解压后的文件夹并在Finder中打开

解决方案

你可以通过以下方式修改代码,直接获取压缩包的首个条目并定位到解压后的对应文件/文件夹:

首先确保你的视图可以访问到 archive(ZipFoundation 的 ZipArchive 实例)和 destinationDirectory(解压目标文件夹的 URL),然后更新按钮逻辑:

func showInFinderButton() -> some View {
    Button {
        guard let destinationDir = destinationDirectory,
              let firstEntry = archive?.first else {
            // 处理无目标路径或压缩包为空的情况
            return
        }
        
        // 拼接解压后首个条目的完整路径
        let extractedItemURL = destinationDir.appendingPathComponent(firstEntry.path)
        
        // 验证文件/文件夹是否存在(避免解压失败的情况)
        guard FileManager.default.fileExists(atPath: extractedItemURL.path) else {
            return
        }
        
        NSWorkspace.shared.activateFileViewerSelecting([extractedItemURL])
    } label: {
        Text("Show in Finder")
    }
}

关键说明:

  • 使用 archive?.first 获取压缩包中的首个条目,无需硬编码路径。
  • 通过 appendingPathComponent(firstEntry.path) 将条目的相对路径拼接到解压目标文件夹路径后,得到解压后文件/文件夹的完整 URL。
  • 增加了文件存在性校验,避免因解压失败导致 Finder 打开无效路径。
  • 遵循 Swift 命名规范,将函数名改为小写开头的 showInFinderButton。

内容的提问来源于stack exchange,提问作者Chucky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:46:08