2016-09-01 96 views
-1

我的项目中有PDF文件。我想给功能下载该文件到移动目录并加载其他应用程序。如何从App目录下载和加载文件到本地

+0

没有得到你正确的!你的pdf在你的项目中意味着什么?在你的应用程序包?如果它在你的应用程序包中,那么你为什么要下载它? – Lion

+0

我已将所有PDF与我的应用程序相连,它对用户不可见。所以只是想将这些PDF复制到用户本地文件夹,所以他们可以很容易地将它用于任何应用程序 –

+0

iPhone没有本地文件夹,您会在哪里复制PDF?您可以通过UIActivityViewController查看共享。 –

回答

1
NSError *error; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 

//NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDir = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"/RTOFiles"];; 
if (![[NSFileManager defaultManager] fileExistsAtPath:documentsDir]) 
    [[NSFileManager defaultManager] createDirectoryAtPath:documentsDir withIntermediateDirectories:NO attributes:nil error:&error]; 

NSString *pdfName = @"form_1.pdf"; 

NSString *docPdfFilePath = [documentsDir stringByAppendingPathComponent: pdfName]; 

//Using NSFileManager we can perform many file system operations. 
BOOL success = [fileManager fileExistsAtPath: docPdfFilePath]; 

if (!success) { 
    NSString *samplePdfFile = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: pdfName]; 

    success = [fileManager copyItemAtPath: samplePdfFile toPath: docPdfFilePath error: &error]; 

    if (!success) 
     //    NSAssert1(0, @"Failed to copy file ‘%@’.", [error localizedDescription]); 
     NSLog(@"Failed to copy %@ file, error %@", pdfName, [error localizedDescription]); 
    else { 
     NSLog(@"%@ File copied to %@", pdfName,documentsDir); 
    } 
} 
else{ 
    NSLog(@"File already Exists !"); 
} 
+0

这将使用双重记忆体,因为它在应用程序包中以及docs目录中。您可以直接使用应用程序包中的文件。我正在写答案转介它。 – Lion

1

你可以直接使用你的形象,如果它是在应用程序bunldle一样,

UIImage *img = [UIImage imageNamed:@"Amy.png"]; 

如果你想在webview从应用程序捆绑加载pdf那么你可以这样做,

NSString *path = [[NSBundle mainBundle] pathForResource:@"yourPdfName" ofType:@"pdf"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:request]; 

总之,如果你有应用程序包中的文件可用,那么你不需要将它复制到documentDirectory,因为它会使用双倍的内存,你可以直接从捆绑使用它。

+0

如果用户不想从App打开文件,那么他们也可以通过文档目录打开它,所以我使用了这个。感谢您的支持 ! –

+0

用户可以直接从应用程序包打开,如果它在应用程序包中,则无需在文档目录中复制! – Lion