NSInputStream读取:maxLength:无法读取数据,返回-1

时间:2014-10-13 06:29:27

标签: objective-c nsstring nsinputstream

在目标C中,我有点像这样:

uint8_t f[400000];
NSString *Str;
unsigned int count = 0;
NSError* error = nil;
Str = [[NSString alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Test" ofType:@"txt"] encoding:NSUTF8StringEncoding error:&error];
@try {
    NSInputStream *fin = [NSInputStream inputStreamWithData:[Str dataUsingEncoding:NSUTF8StringEncoding]];
    count = [fin read:f maxLength:400000];

}
@catch (NSException * e) {
    NSLog(@"Exception: %@", e);
}
@finally {
    NSLog(@"finally");
}

我正在将nsstring转换为nsinputstream,然后尝试阅读内容

但是在调试代码之后,count中有-1,即读取时发生错误。我不明白我在这里做错了什么!有人可以帮帮我。

注意Test.txt是一个纯文本文件,内容为“Hello”,调试显示Str初始化内容。这意味着try块中存在错误。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您没有打开该流。您无法读取/写入NSStreamNSInputStreamNSOutputStream都是NSStream的子类)而无需先打开它。在阅读之前,只需在流对象上调用open