gpt4 book ai didi

ios - 如何确定文件是否为 zip 文件?

转载 作者:可可西里 更新时间:2023-11-01 03:29:09 28 4
gpt4 key购买 nike

我需要确定应用文档目录中的文件是否为 zip 文件。文件名不能用于进行此确定。所以我需要能够读取 MIME 类型或找到一些仅适用于 zips 的其他属性。

注意:需要将整个文件放入内存的解决方案并不理想,因为文件可能非常大。

最佳答案

根据 http://www.pkware.com/documents/casestudies/APPNOTE.TXT ,ZIP 文件以“本地文件头签名”开头

0x50, 0x4b, 0x03, 0x04

因此读取前 4 个字节就足以检查文件是否可能是 ZIP 文件。只有当您实际尝试提取文件时才能做出明确的决定。

读取文件前 4 个字节的方法有很多。你可以使用 NSFileHandle,NSInputStream,打开/读取/关闭,...。所以这应该只作为一个可能的例子:

NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@"/path/to/file"];
NSData *data = [fh readDataOfLength:4];
if ([data length] == 4) {
const char *bytes = [data bytes];
if (bytes[0] == 'P' && bytes[1] == 'K' && bytes[2] == 3 && bytes[3] == 4) {
// File starts with ZIP magic ...
}
}

Swift 4 版本:

if let fh = FileHandle(forReadingAtPath: "/path/to/file") {
let data = fh.readData(ofLength: 4)
if data.starts(with: [0x50, 0x4b, 0x03, 0x04]) {
// File starts with ZIP magic ...
}
fh.closeFile()
}

关于ios - 如何确定文件是否为 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18194688/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com