文件对于NSData dataWithContentsOfFile来说太大了,得到错误

时间:2016-07-22 16:01:40

标签: ios objective-c compression gzip tar

我有一些远程.tar.gz文件,我正在下载到我的应用程序中,然后我需要取消归档。我正在使用输出流将文件写入磁盘,以便我的内存使用率很低。

现在,当我要解压缩文件时,我必须将其加载为NSData。该文件约为1.2演出,所以这是我遇到问题的地方。

NSString *path = [self pathForFileName:vectorFile.fileName];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfFile:path options:0 error:&error];
   if (error) {
      NSLog(@"%@", error.localizedDescription);
   }

执行此操作并尝试将该文件读入NSData时,出现以下错误:

malloc: *** mach_vm_map(size=1005060096) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
The file “test.tar.gz” couldn’t be opened.

我假设这个文件太大了我的iPhone 6无法处理,因为尝试将其加载到NSData对象中会将其加载到RAM中,这对于一个应用来说太多了系统不会允许它。

如果是这种情况,还有其他方法吗?如何在iOS上解压缩这样的大文件?

0 个答案:

没有答案