:
@interface NSData(DataWithContentsOfFileAtOffsetWithSize)
+ (NSData *) dataWithContentsOfFile:(NSString *)path atOffset:(off_t)offset withSize:(size_t)bytes;
@end
@implementation NSData(DataWithContentsOfFileAtOffsetWithSize)
+ (NSData *) dataWithContentsOfFile:(NSString *)path atOffset:(off_t)offset withSize:(size_t)bytes
{
FILE *file = fopen([path UTF8String], "rb");
if(file == NULL)
return nil;
void *data = malloc(bytes); // check for NULL!
fseeko(file, offset, SEEK_SET);
fread(data, 1, bytes, 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:bytes];
}
@end
その後、あなたは、このことができます:
// Read 100 bytes of data beginning at offset 500 from "somefile"
NSData *data = [NSData dataWithContentsOfFile:@"somefile" atOffset:500 withSize:100];
を
あなたはNSInputStreamを意味しますか? – Tim
はい。私はNSInputStreamを意味しました。混乱して申し訳ありません – coneybeare
あなたはデバイスが何をしているかを制御できますか?おそらく、受け取ったパケットに対してackを送り返すことができるでしょうか?それで、あなたはackを受け取るまでパケットをメモリに保存して再送しますか? –