如何将二进制数据写入文件?我想原始地将浮点数写入文件,然后再将其作为浮点数读取。你怎么做呢?
我一直在尝试这个:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *file = [documentsDirectory stringByAppendingPathComponent:@"binaryData"];
float b = 32.0f;
NSMutableData *data = [NSMutableData dataWithLength:sizeof(float)];
[data appendBytes:&b length:sizeof(float)];
[data writeToFile:file atomically:YES];
NSData *read = [NSData dataWithContentsOfFile:file];
float b2;
NSRange test = {0,4};
[read getBytes:&b2 range:test];
奇怪的是写入的文件似乎是8字节而不是4字节。甚至可以使用长度为0的NSData进行初始化,添加一个float,然后写入,然后文件将会是4个字节。为什么NSData默认会添加4个字节呢?一个长度为4的NSData应该产生一个长度为4的文件,而不是8。
NSFileHandle handle*;
float f;
write([handle fileDescriptor], &f, sizeof(float));