我想使用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];
我希望填充’contents’变量而不创建临时文件.我可以在记忆中做到这一点吗?我在NSOutputStream documentation中没有看到API.
解决方法
根据难以找到的文档,首先使用内存初始化输出流,然后使用密钥NSStreamDataWrittenToMemoryStreamKey调用propertyForKey方法.
对于你的例子:
NSOutputStream *outputStream = [[NSOutputStream alloc] initToMemory]; [outputStream open]; // fill the output stream somehow NSData *contents = [outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; [outputStream close];