【发布时间】:2014-08-01 20:43:53
【问题描述】:
我正在使用NSFileHandle 来获取正在录制的视频的数据。
它在通知方面工作得很好,我收到了使用NSFileHandleDataAvailableNotification 的通知。问题是视频文件最终不起作用。
每次将原始文件与使用 NSFileHandle 数据创建的文件进行比较时,总是只有几个字节是错误的,这意味着 NSFileHandle 读取错误。
这就是我添加数据的方式
-(void) gotData: (NSNotification *) not{
NSFileHandle *handle = not.object;
NSData *data = [handle availableData];
if(data.length){
NSLog(@"got %d", data.length);
[test appendData: data];
[handle waitForDataInBackgroundAndNotify];
}else{
NSLog(@"Ended");
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSFileHandleDataAvailableNotification object: handle];
}
}
这就是我最终写入数据的方式:
[test writeToFile:[NSTemporaryDirectory() stringByAppendingPathComponent:@"x.mp4"] atomically:YES];
当在原始文件和来自 NSFileHandle 的文件之间进行 diff 时,这里的字节是错误的(即使两者的大小完全相同):
我对这种奇怪的行为一无所知,如果您遇到类似的问题,我希望您能提供帮助。
【问题讨论】:
标签: ios avfoundation nsdata nsfilemanager nsfilehandle