Iphone 在目标c中使用NSStream将NSData写入输出流时需要帮助
我使用下面的代码将文件从路径写入输出流,但每次运行代码时,它总是将131768字节写入流,这与我的文件大小有关(8MB或5MB等)。有人能帮我查一下吗?我似乎找不到问题。或者有其他的方法吗?我正在使用NSStream,代码如下:Iphone 在目标c中使用NSStream将NSData写入输出流时需要帮助,iphone,objective-c,nsstream,Iphone,Objective C,Nsstream,我使用下面的代码将文件从路径写入输出流,但每次运行代码时,它总是将131768字节写入流,这与我的文件大小有关(8MB或5MB等)。有人能帮我查一下吗?我似乎找不到问题。或者有其他的方法吗?我正在使用NSStream,代码如下: NSString *filesContent = [[NSString alloc] initWithContentsOfFile:myMediaFile]; // myMediaFile is a path to my file eg. .../D
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);
}
这是一个复制品,我并不惊讶你没有找到那个
底线;write:maxLength:
方法不一定会一次性写入传递给它的所有数据。这涉及到缓冲,因此,当输出流上有可用空间时,您可能需要循环写入数据
请注意,“循环”并不是指“轮询”。为什么要使用“%ld”格式打印
(长)
值?可能重复shd的操作方式?我在NSSTREATEVENTHASSPACE中执行了上述代码,但仍然相同outcome@tan:尝试阅读Apple stream编程指南。