目标C - 无法读取Iphone中的文档目录或缓存中的文件

时间:2011-09-30 02:01:52

标签: iphone objective-c caching document

在我的工作中,我只想阅读iphone设备中下载的PDF

首先,我尝试使用“bundleRoot”目录,它在模拟器中工作但在设备上没有。现在,我只是在模拟器中测试文档目录或缓存。

How can I get a writable path on the iPhone?

在我阅读上述主题后,

我尝试过使用文档目录或缓存。

这是我找到可写路径的代码

/ ********************************************** ******************************** /

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;

if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}


NSString *path_to_file = [cachePath stringByAppendingPathComponent:@"testing6.pdf"];

/ ********************************************** ********* /

我可以找到下载的文件并获取此目录中的大小,但我无法使用以下代码读取该文件:

            pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);

    page = CGPDFDocumentGetPage(pdf, 1);
    CGPDFPageRetain(page);

    CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);

返回pageRect.size.width为0

打印出下载和检索文件路径后,还有:

/ Users / ITDEV / Library / Application Support / iPhone Simulator / 4.3.2 / Applications / 806ED359-70F8-4C07-996F-6AFC959B3FC7 / Library / Caches / testing6.pdf

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您可以在UIWebView中阅读该文件。

使用以下代码即可打开文件。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error;

if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
    [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}


NSString *path_to_file = [cachePath stringByAppendingPathComponent:@"testing6.pdf"];

NSURL *targetURL = [NSURL fileURLWithPath:path_to_file];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[YourWebViewName loadRequest:request];

请勿忘记将您的网页浏览的IBOutlet与nib文件的UIWebview相关联。

答案 1 :(得分:0)

如果所有其他答案都不起作用,请尝试使用NSBundle,如下所示:

NSString *path = [[NSBundle mainBundle] pathForResource:@"myfilename" ofType:@"pdf"];
NSLog("path : %@",path);

我面临同样的问题,我发现我的plist文件不在Documents目录中,而是显示我的应用程序的路径,然后它显示MYAppName.app/myPlist.plist文件。这意味着app文件在我自己的包中包含我的plist文件,即MainBundle。