ios - 将文件下载到文档目录

标签 ios xcode nsdocumentdirectory

我正在尝试将下载的文件复制到应用程序文档目录中的特定文件夹,但似乎无法正常工作。我使用的代码是:

NSString *itemPathString = @"http://pathToFolder/folder/myFile.doc";
NSURL *myUrl = [NSURL URLWithString:itemPathString];

NSArray *paths = [fm URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];

NSURL *folderPath = [[paths objectAtIndex:0] URLByAppendingPathComponent:@"folder"];
NSURL *itemURL = [documentsPath URLByAppendingPathComponent:@"myFile.doc"];

// copy to documents directory asynchronously
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    NSFileManager *theFM = [[NSFileManager alloc] init];
    NSError *error;
    [theFM copyItemAtURL:myUrl toURL:itemURL error:&error];
    }
});

我可以检索该文件,但不能复制它。谁能告诉我以上代码是否有问题?

最佳答案

如果从服务器下载文件,如果文件很小(例如,以kb为单位,而不是以mb为单位),则可以使用 dataWithContentsOfURL 。您可以使用该方法将文件加载到内存中,然后使用NSData实例方法writeToFile保存文件。

但是,如果文件较大,则需要使用 NSURLConnection ,它不会尝试将整个文件保存在内存中,而是在适当的时候将其写入文件系统。但是,这里的窍门是,如果您要下载多个文件,则必须顺序下载它们,或者封装NSURLConnectionNSOutputStream,以便可以为每个同时下载的文件提供单独的副本。

我上载了一个项目Download Manager,该项目演示了NSURLConnection实现的外观,但这并不简单。您可能希望考虑使用已建立的第三方库,例如ASIHTTPRequestRestKit

关于ios - 将文件下载到文档目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363858/

相关文章:

iOS IAP Error Domain=SKErrorDomain Code=2 in Production

xcode - 为 OSX 重命名 Xcode 项目后出现 NSKeyedUnarchiver 错误

ios - Settings.bundle 名称仍然是硬编码的?

ios - 如何在 Xcode 中旋转 UISwitch?

ios - Cocoapods:cocoapods(0.28.0) 管理 3rdparty 库问题

ios - 如何检查当前用户是否存在?

iphone - 父 View Controller 中是否有一个委托(delegate)在模态视图被关闭后被调用?

avfoundation - 如何将来自 AVFoundations captureStillImageAsynchronouslyFromConnection 的 TIFF 照片保存到 iPhone (iOS) 上带有 EXIF 元数据的文件中?

objective-c - 显示来自 NSDocumentDirectory 的照片

swift - 如何检查文档目录中是否存在多个文件? ( swift )