Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在目标c中使用NSStream将NSData写入输出流时需要帮助_Iphone_Objective C_Nsstream - Fatal编程技术网

Iphone 在目标c中使用NSStream将NSData写入输出流时需要帮助

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

我使用下面的代码将文件从路径写入输出流,但每次运行代码时,它总是将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);
 }
这是一个复制品,我并不惊讶你没有找到那个

底线;
write:maxLength:
方法不一定会一次性写入传递给它的所有数据。这涉及到缓冲,因此,当输出流上有可用空间时,您可能需要循环写入数据


请注意,“循环”并不是指“轮询”。

为什么要使用“%ld”格式打印
(长)
值?可能重复shd的操作方式?我在NSSTREATEVENTHASSPACE中执行了上述代码,但仍然相同outcome@tan:尝试阅读Apple stream编程指南。