在NSFileManager中是否有任何方法只能获取某些字节范围的文件内容

时间:2013-04-01 13:53:55

标签: iphone ios file-io nsfilemanager fseek

我有一些大小为6.7GB的文件,以及更多(这些是视频文件)。 我想把大块的文件数据发送到我的服务器,所以我现在做的是:

contents = [fileManager contentsAtPath:path];
if (mFileOffset<[contents length]) {
NSRange range = NSMakeRange(mFileOffset, (allowedSize>[contents length]?[contents length]:allowedSize);
contents =[contents subdataWithRange:range];

然而,这会产生内存问题:

malloc: *** mmap(size=616927232) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
APP(2700,0x4136000) malloc: *** mmap(size=616927232) failed (error code=12)
*** error: can't allocate region

fseek中有c++这样的方法,以便我只读取指定范围内的文件的字节数吗?

2 个答案:

答案 0 :(得分:3)

NSFileHandle中有一个方法可以同步读取指定字节数的数据。

-[NSFileHandle readDataOfLength:]

寻求:

– offsetInFile
– seekToEndOfFile
– seekToFileOffset:

答案 1 :(得分:2)

fseek不是C++,而是C函数。 Obj-C中提供了相同的功能。

请注意,Obj-C只是C上的一个图层,每个有效C代码也是有效的Obj-C代码。

文件功能也被抽象为Obj-CNSFileHandle。但是,此类与fopenfseekfclose等具有完全相同的功能。