从URLSession存储Swift 2+中的文件

时间:2016-07-07 14:37:39

标签: file swift2 nsdata nsurlsession

我正在下载一个大文件,当它完成

URLSession(session: NSURLSession, 
           downloadTask: NSURLSessionDownloadTask,
           didFinishDownloadingToURL location: NSURL)

方法被调用。

我想在本地保存生成的文件,例如NSSearchPathDirectory.DocumentDirectory。 但是我遇到了一些问题,主要是因为文件非常大500MB +

我试过了:

NSFileManager.defaultManager().createFileAtPath(savePath, 
                                                contents: fileData, 
                                                attributes: nil)

适用于较小的文件<带有

的100MB但更大的文件
Code=12 "Cannot allocate memory"

尝试将下载的文件转换为NSData时,如下所示:

let data: NSData = try NSData(contentsOfURL: location,
                              options: NSDataReadingOptions.DataReadingMappedIfSafe)

问题是,还有另一种方法可以将location: NSURL转换为NSData,以便大文件没有内存问题吗?

或者是否有更好的方法来保存NSFileManager.defaultManager().createFileAtPath()以外的大文件,只是因为它不需要NSData

1 个答案:

答案 0 :(得分:1)

尝试使用NSFileManager' copyItemAtURL:toURL:error:将文件从位置复制到您想要的位置