gpt4 book ai didi

iphone - zlib iPhone - 文件一开始就很糟糕

转载 作者:行者123 更新时间:2023-12-03 20:27:00 25 4
gpt4 key购买 nike

我的包中有几个 .tgz 文件,我想将它们解压缩并写入文件。我已经让它工作了 - 有点。问题是写入的文件前面有 512 字节的垃圾数据,但除此之外,文件解压成功。

alt text
(来源:pici.se)

我不想废话。如果它始终是 512 字节,那么当然很容易跳过这些字节并写入其他字节。但总是这样吗?如果人们一开始就不知道为什么这些字节在那里,那么做类似的事情是有风险的。

    gzFile f = gzopen ([[[NSBundle mainBundle] pathForResource:file ofType:@"tgz"] cStringUsingEncoding:NSASCIIStringEncoding], [@"rb" cStringUsingEncoding:NSASCIIStringEncoding]); 
unsigned int length = 1024*1024;
void *buffer = malloc(length);
NSMutableData *data = [NSMutableData new];

while (true)
{
int read = gzread(f, buffer, length);

if (read > 0)
{
[data appendBytes:buffer length:read];
}
else if (read == 0)
break;
else if (read == -1)
{
throw [NSException exceptionWithName:@"Decompression failed" reason:@"read = -1" userInfo:nil];
}
else
{
throw [NSException exceptionWithName:@"Unexpected state from zlib" reason:@"read < -1" userInfo:nil];
}
}

int writeSucceeded = [data writeToFile:file automatically:YES];

free(buffer);
[data release];

if (!writeSucceeded)
throw [NSException exceptionWithName:@"Write failed" reason:@"writeSucceeded != true" userInfo:nil];

最佳答案

根据您发布的代码,您似乎尝试仅使用 gzip 来读取 Tar'ed gZip'ed 文件。

我的猜测是,解压后文件开头的“垃圾”实际上是 TAR 文件头(我在开头看到了一个文件名)。

更多提示Tar File Format指向 512 字节大小。

gzip 只能压缩单个文件。如果您只想压缩单个文件,则无需先对其进行 tar 压缩。

如果您尝试将多个文件压缩为单个存档,那么您需要使用 TAR 并在解压文件后解压这些文件。

只是猜测。

克里斯。

关于iphone - zlib iPhone - 文件一开始就很糟糕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1588861/

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