从字节到字节读取文件中的数据大小

时间:2013-06-21 09:15:18

标签: objective-c nsdata

假设我想以10MB的块下载50MB的文件。在之前的会话中,我已经下载了8MB,所以甚至没有一个块完成。我想验证文件中从x到x字节的字节数。因此从0到10485759字节读取数据会给我8MB而不是10MB,就像下面的函数一样。有什么建议吗?

我使用此方法用于不同的方法,但这将始终返回块的完整大小:

+ (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];
}

0 个答案:

没有答案