我正在下载一个大文件,当它完成时
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
?
> 尝试使用 NSFileManager
的 copyItemAtURL:toURL:error: 将文件从位置复制到您想要的任何位置