В Objective C, у меня есть somethng вроде этого:NSInputStream следующим образом: MAXLENGTH: не может прочитать данные, возвращает -1
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
.
Любая помощь приветствуется.
I * believe * вам необходимо настроить делегат и запланировать входной поток в цикле выполнения ([см. Это] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ Струйные/Статьи/ReadingInputStreams.html)). Вместо этого используйте 'NSFileManager'. – Droppy
Да, он сделал трюк – Sibir
Также создание переменной 400K 'auto' - плохая идея ;-) – Droppy