Objective-C
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
#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.");