swift - NSData.decompressed 在 Swift 中抛出错误
问题描述
嘿伙计们,我想在 Swift 中使用 NSData 的解压缩方法解压缩一个 gz 文件。该文件已成功加载到 NSData 中,但如果我尝试解压缩它,它会引发错误。
var data: NSData
let paths = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)
var url = paths[0]
url.appendPathComponent("g.srt.gz")
do {
data = try Data(contentsOf: url) as NSData
print(data)
let dec = try data.decompressed(using: .zlib)
} catch { print(error.localizedDescription) }
这是我看到的输出:
{length = 17859, bytes = 0x1f8b0800 00000000 00038d7d cd8ee446 ... 10deea38 94b70000 }
The operation couldn’t be completed. (Cocoa error 5377.)
我尝试了所有的 DecompressionAlgorithms,我总是得到上面的错误。在 Finder 中我可以解压它,所以它没有损坏。
我是否缺少某些东西(Info.plist 中的功能或其他内容)?我不想使用任何外部库或框架。
我的环境是 macOS 11.3.1、Xcode 12.5、Swift 5
解决方案
该数据是 gzip 流,而不是 zlib 流。您使用的方法没有 gzip 选项。请参阅此答案以获取解决方案。
推荐阅读
- javascript - 反应:在导航离开之前等待 useReducer 调度
- c++ - 无法使用 cryptopp.lib 构建项目
- reactjs - G2 - Antv - 标记堆叠值的总和
- pester - Pester 测试运行器和外部数据驱动测试
- python - DisjointSet() 函数
- python - 如何从二进制 .txt 文件创建 .bin 文件?
- plot - Superset 处理时间序列中的缺失值 - 条形图和折线图之间的差异
- angular - 如何使 execCommand 以角度工作
- pine-script - 绘制矩形松树脚本
- r - 如何在 pivot_longer() 中使用 names_pattern() 参数?