Sample code for 30+ languages & platforms
Objective-C

File Read Blocks

Demonstrates how to read a file in fixed-size blocks (except for the very last block).

Chilkat Objective-C Downloads

Objective-C
#import <CkoFileAccess.h>
#import <NSString.h>

BOOL success = NO;

//  Demonstrates how to read a file in blocks,
//  which can be useful when uploading to cloud storage
//  services such as Azure, S3, Google, etc.

//  For this example, we're simply writing the blocks
//  to an output file, and then checking to see if the
//  resulting file contents equals the original file contents.

NSData dataBlock;

CkoFileAccess *facSrc = [[CkoFileAccess alloc] init];
CkoFileAccess *facDest = [[CkoFileAccess alloc] init];

NSString *srcPath = @"qa_data/xml/hamlet.xml";
NSString *destPath = @"qa_output/hamletOut.xml";

success = [facSrc OpenForRead: srcPath];
success = [facDest OpenForWrite: destPath];
//  Assuming success for the example..

//  How many 1024-byte blocks?  (Including 1 for the last partial block)
int numBlocks = [[facSrc GetNumBlocks: [NSNumber numberWithInt: 1024]] intValue];

int i = 0;
while ((i < numBlocks)) {
    dataBlock = [facSrc ReadBlock: [NSNumber numberWithInt: i] blockSize: [NSNumber numberWithInt: 1024]];
    if (facSrc.LastMethodSuccess != YES) {
        NSLog(@"%@",facSrc.LastErrorText);
        return;
    }

    success = [facDest FileWrite: dataBlock];
    if (success != YES) {
        NSLog(@"%@",facDest.LastErrorText);
        return;
    }

    i = i + 1;
}

[facSrc FileClose];
[facDest FileClose];

BOOL bEqual = [facSrc FileContentsEqual: srcPath path2: destPath];
if (bEqual != YES) {
    NSLog(@"%@",@"Something went wrong!");
    return;
}

NSLog(@"%@",@"File successfully copied by blocks.");