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

Posted

技术标签:

【中文标题】异步数据附加到ios中的文件?【英文标题】:Asynchronous data append to file in ios? 【发布时间】:2012-05-24 00:36:50 【问题描述】:

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

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

方法。 在这种方法中,我想将迄今为止下载的“数据”直接附加到磁盘上的文件中。 你能帮一点忙吗? 如果没有低级 C 也能做到这一点,那就完美了。

【问题讨论】:

【参考方案1】:

我从未尝试过,但我建议 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]; 
 

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

【讨论】:

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

以上是关于异步数据附加到ios中的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个图像附加到 ios 中的 mfmailcomposer 视图控制器

附加到文本文件(不覆盖!)

如何处理 iOS 远程消息中的附加数据 GCM

将数据附加到 node.js 中的 formData ...我发布到我的 api 的数据总是显示为空?

X-Editable:将事件附加到数据更改

如何将新数据附加到属性文件中的现有数据?