о NSInputstream

-(NSString*)dateFilePath{

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory=[paths objectAtIndex:0];

return [documentsDirectory stringByAppendingPathComponent:kFileName];
}


- (void)viewDidLoad
{

int actuallyRead=0;

NSString *path=[self dateFilePath];

NSURL *audiourl=[[NSURL alloc]initFileURLWithPath:path];

NSLog(@"%@",audiourl);

inStream=[[NSInputStream alloc]initWithURL:audiourl];

actuallyRead=[inStream read:buffer maxLength:sizeof(buffer)];

NSLog(@"%d",actuallyRead);

[dataBuffer1 appendBytes:buffer length:actuallyRead];

NSLog(@"%d",actuallyRead);

[inStream release];

[super viewDidLoad];

}
IN .h file
NSInputStream  *inStream;
NSMutableData  *dateBuffer1;
unint8_t       buffer[1024];

Там в файле в Документах, я хочу загрузить в буфер, используя этот метод, но на самом деле Read всегда -1, что-то не так в моем методе?


person user768959    schedule 25.05.2011    source источник


Ответы (2)


Причина, по которой вы всегда получаете -1, заключается в том, что вы забыли открыть поток, поэтому все, что вам нужно сделать, это вставить строку [inStream open]; после инициализации вашего NSInputStream и до того, как вы попытаетесь его прочитать.

person kurgan    schedule 22.08.2012

Вы должны проверить, доступен ли inStream,

if (nil == inStream)
person crax    schedule 22.06.2011