2012-05-24 3 views
3

네트워크 경로에서 이미지를 다운로드하고 싶습니다. 하지만 큰 파일의 위험이 있기 때문에 문서 디렉토리에있는 파일에 부분 NSdata 청크를 직접 쓰거나 추가하는 것이 좋습니다. 이것은 가능한가요? 비동기 URLConnection을 설정했습니다. 대표단에게 다시 전화합니다.비동기 데이터가 파일에 추가됩니까?

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

메서드입니다. 이 방법으로, 지금까지 다운로드 한 "데이터"를 파일에 직접 디스크에 추가하고 싶습니다. 조금 도와 드릴까요? 낮은 레벨 C 없이는 이것이 가능하면 완벽 할 것입니다.

답변

7

내가이 시도 havent 한,하지만 this apple docs에서, 나는

@property (nonatomic,strong) NSFileHandle *handle; 


//somewhere in a init or viewDidLoad 
self.handle = [NSFileHandle fileHandleForUpdatingAtPath:filePath] 

-(void)connection:(NSURLConnection *)connection 
    didReceiveData:(NSData *)data 
{ 
    [handle seekToEndOfFile]; 
    [handle writeData:data]; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    [self.handle closeFile]; 
} 

참고 좋을 것 : 파일 경로가 기존 파일에 대한 유효한 경로 여야합니다, 파일을 생성 다루는 수많은 게시물이 있습니다.

+3

감사의 말, 감사합니다. 유일한 방법은 그 메소드에 [handle closeFile]을 두는 것이 옳지 않다는 것입니다. 다음 호출에서는 (이전 호출에서) 파일이 닫히기 때문에 다음 데이터 청크를 추가 할 수 없기 때문입니다. 이 경우 - (void) connectionDidFinishLoading : (NSURLConnection *) 연결 { \t [self.handle closeFile]; }이 유용합니다. –

관련 문제