0

50MB のファイルを 10MB のチャンクでダウンロードしたいとします。前回のセッションでは 8MB をダウンロードしたため、1 つのチャンクも完了していません。x から x バイトの範囲で、ファイル内のバイト数を確認したいと考えています。したがって、0 ~ 10485759 バイトのデータを読み取ると、以下の関数のように 10MB ではなく、この 8MB が得られます。何かアドバイス?

私はこのメソッドを別の目的で使用していますが、これは常にチャンクのフルサイズを返します:

+ (NSData *)dataWithContentsOfFile:(NSString *)path withStartOffset:(off_t)startOffset andEndOffset:(off_t)endOffset
{
    FILE *file = fopen([path UTF8String], "rb");
    if(file == NULL)
        return nil;
    uint64_t size = (endOffset - startOffset) + 1;
    void *data = malloc(size);  // check for NULL!
    fseeko(file, startOffset, SEEK_SET);
    fread(data, 1, size, file);  // check return value, in case read was short!
    fclose(file);

    // NSData takes ownership and will call free(data) when it's released
    return [NSData dataWithBytesNoCopy:data length:size];
}
4

0 に答える 0