我使用以下代码将文件从路径写入输出流,但每次运行代码时,它总是将131768字节写入流文件大小(8MB或5MB等)。有人可以帮我查一下吗?我似乎无法找到问题。还是有其他方法可以做到这一点?我正在使用带有以下代码的NSStream:
NSString *filesContent = [[NSString alloc] initWithContentsOfFile:myMediaFile]; // myMediaFile is a path to my file eg. .../Documents/myvideo.mp4/
NSData *data = [ filesContent dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
const uint8_t *buf = [data bytes];
NSUInteger length = [data length];
NSLog(@"datalen = %d",length);
NSInteger nwritten = [outputStream write:buf maxLength:length];
if (-1 == nwritten) {
NSLog(@"Error writing to stream %@: %@", outputStream, [outputStream streamError]);
}else{
NSLog(@"Wrote %ld bytes to stream %@.", (long long)nwritten, outputStream);
}
答案 0 :(得分:2)
这是How to use NSOutputStream's write message?的副本,并不是因为没有找到那个而感到惊讶。
底线; write:maxLength:
方法不一定会写入您传递给它的所有数据。涉及缓冲,因此,当输出流上有空间时,您可能需要循环写入数据。
请注意,通过“循环”,我不是指“民意调查”。