2014-10-13 5 views
0

:NSInputStream 읽기 : 최대 길이 :이 같은 somethng이, 데이터를 읽을 수 없습니다, -1 반환 목표 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"); 
} 

내가 nsinputstreamnsstring 변환하고를 다음의 내용을 읽으려고

그러나 코드를 디버그 한 후 count에 -1이 있습니다. 즉, 읽는 동안 오류가 발생했습니다. 내가 뭘 잘못하고 있는지 이해가 안돼! 누군가 나를 도울 수 있습니까?

참고 : Test.txt은 콘텐츠가 "Hello"로 표시된 일반 텍스트 파일이며 디버깅은 Str이 콘텐츠로 초기화되었음을 보여줍니다. 즉, try 블록에 문제가 있음을 의미합니다.

도움을 주시면 감사하겠습니다.

+1

위임을 설정하고 실행 루프 ([참조] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/)에서 입력 스트림을 예약해야합니다. Streams/Articles/ReadingInputStreams.html)). 대신에'NSFileManager'를 사용하십시오. – Droppy

+0

예 트릭을 만들었습니다 – Sibir

+0

또한 400K'auto' 변수를 만드는 것은 나쁜 생각입니다 ;-) – Droppy

답변

1

스트림을 열지 못했습니다. NSStream (NSInputStreamNSOutputStream은 모두 NSStream의 두 하위 클래스입니다.)에서 읽거나 쓰거나 읽을 수는 없습니다. 스트림 개체에서 읽기 전에 open으로 전화하면됩니다.