异步数据附加到ios中的文件?

Ear*_*rey 3 cocoa-touch file objective-c save ios

我想从网络路径下载图像.但是由于存在大文件的风险,我认为将部分NSdata块直接写入/附加到文档目录中的文件是个好主意.这是真的吗?我有一个异步URLConnection设置.它回电给代表

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
Run Code Online (Sandbox Code Playgroud)

方法.在这种方法中,我想将目前为止下载的"数据"直接附加到磁盘上.你能帮忙吗?如果这可能是没有低级别C的可能,那将是完美的.

Vik*_*ica 7

我没试过这个,但是从这个苹果文档来看,我建议

@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]; 
} 
Run Code Online (Sandbox Code Playgroud)

注意:filePath必须是现有文件的有效路径,有许多帖子涉及创建文件.

  • 这个建议很有效,谢谢.我唯一要补充的是,将[handle closeFile]放在该方法中是不正确的.因为在下一次调用时,由于文件将被关闭(从之前的调用),因此无法附加下一个数据块.为此, - (void)connectionDidFinishLoading:(NSURLConnection*)connection {[self.handle closeFile]; 很有用. (3认同)