2015-10-13 139 views
3

我想知道,如果有以下問題的不同和更快的解決方案。我正在下載一個帶有NSURLSession的文件。默認情況下(我猜?)下載的文件存儲在tmp文件夾中。然後我需要將這個文件複製到緩存文件夾。目前我使用我的方法的代碼(在didFinishDownloading功能)快速複製tmp文件

if let fileData = NSData(contentsOfURL: sourceUrl) { 
     fileData.writeToURL(destinationURL, atomically: true) // true 
     print(destinationURL.path!) 
     } 

然而,正如我的文件是相當大的,這需要一段時間。 將此文件複製到緩存文件夾有沒有不同的選項? 或者是否可以使用NSURLSession將文件直接下載到Cache文件夾?

回答

2

而不是複製文件,你可以簡單地移動它的 所需位置:

do { 
    try NSFileManager.defaultManager().moveItemAtURL(sourceURL, toURL: destinationURL) 
} catch let err as NSError { 
    print(err.localizedDescription) 
} 

這將是更快,因爲只有在 文件系統的目錄項被修改,但沒有數據實際上被複制。

斯威夫特3更新:

do { 
    try FileManager.default.moveItem(at: sourceURL, to: destinationURL) 
} catch { 
    print(error.localizedDescription) 
} 
+0

是有道理的,和它的作品!謝謝你的解決方案 – Simon

+1

@Simon:不客氣! –