Thursday, June 14, 2012

Split file by block size

Split file with block size
/* splitFile */
- (NSUInteger)splitFile:(NSString *)filename chunkSize:(NSUInteger)chunkSize {
    NSUInteger chunksWritten;
   
    NSFileManager *fm = [[[NSFileManager alloc] init] autorelease];
    NSData *fileData = [NSData dataWithContentsOfFile:filename];
    NSString *newFileName;
    NSRange dataRange;
    for (chunksWritten = 0; chunksWritten * chunkSize < [fileData length]; chunksWritten++) {
        newFileName = [filename stringByAppendingPathExtension:[NSString stringWithFormat:@"%03d", chunksWritten]];
        dataRange = NSMakeRange(chunksWritten * chunkSize, MIN(chunkSize, [fileData length] - chunksWritten * chunkSize));
        if (![fm createFileAtPath:newFileName contents:[fileData subdataWithRange:dataRange] attributes:nil]) {
            NSLog(@"Error writing chunk #%d", chunksWritten);
            break;
        }
    }
    return chunksWritten;
}


No comments:

Post a Comment