0

サイズが 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++

4

2 に答える 2

3

NSFileHandleには、指定されたバイト数までデータを同期的に読み取るメソッドがあります。

-[NSFileHandle readDataOfLength:]

求める場合:

– offsetInFile
– seekToEndOfFile
– seekToFileOffset:
于 2013-04-01T13:59:21.117 に答える
2

fseekではなくC++C関数です。で同じ機能を利用できますObj-C

Obj-Cは単なるレイヤーでCあり、すべてCの有効なコードも有効なコードであることに注意してくださいObj-C

ファイル関数もObj-Cクラスに抽象化されNSFileHandleます。fopenただし、このクラスには、などとまったく同じ機能がありますfseekfclose

于 2013-04-01T14:07:31.093 に答える