0

我试图将 NSMainBundle 中的现有 pdf 文件复制到 NSDocumentsDirectory 中。该文件稍后会加载到 uiwebview 中。我似乎无法理解为什么它不复制文件。对此有什么帮助吗?

 NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *resourceDBFolderPath = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"];


[fileManager copyItemAtPath:resourceDBFolderPath toPath:documentsDirectory error:&error];



NSArray *path1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath =  [path1 objectAtIndex:0];
NSString *fileLoc = [basePath stringByAppendingString:@"document.pdf"];
NSURL *url = [NSURL fileURLWithPath:fileLoc];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];
4

2 回答 2

2

您的目标路径必须包含文件名。

从文档:

dstPath

放置 srcPath 副本的路径。此路径必须在其新位置包含文件或目录的名称。此参数不得为 nil。

于 2012-09-23T17:54:51.087 回答
1

将您的代码源替换为以下内容:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentDirectoryPath = [documentsDirectory stringByAppendingPathComponent:@"document.pdf"];
NSString *resourceDBBundlePath = [[NSBundle mainBundle] pathForResource:@"document" ofType:@"pdf"];

[fileManager copyItemAtPath:resourceDBBundlePath toPath:documentDirectoryPath error:&error];

正如 FD_ 所提到的,您的目标路径需要包含您的文件名。

于 2012-09-23T22:51:24.803 回答