8

我想使用 NSOutputStream 来累积数据,然后在完成后创建一个包含内容的 NSData 对象。当输出流基于文件时我可以这样做,如下:

NSString *tmpDirectory = NSTemporaryDirectory();
NSString *filePath = [tmpDirectory stringByAppendingPathComponent:@"tempfile"];
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
NSOutputStream *outputStream = [[NSOutputStream alloc] initToFileAtPath:filePath append:NO];     [outputStream open];

// fill the output stream here

NSData *contents = [NSData dataWithContentsOfFile:filePath];
[outputStream close];

我希望在不创建临时文件的情况下填充“内容”变量。我可以在内存中做这一切吗?我在NSOutputStream 文档中没有看到 API 。

4

1 回答 1

16

根据很难找到的文档,首先使用内存初始化输出流,然后使用键NSStreamDataWrittenToMemoryStreamKey调用propertyForKey方法。

对于您的示例:

NSOutputStream *outputStream = [[NSOutputStream alloc] initToMemory];
[outputStream open];

// fill the output stream somehow

NSData *contents = [outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
[outputStream close];
于 2014-05-28T21:29:33.870 回答