在 iPhone 应用程序中打开文件 - NSFileManager isReadableFileAtPath 返回 NO

Posted

技术标签:

【中文标题】在 iPhone 应用程序中打开文件 - NSFileManager isReadableFileAtPath 返回 NO【英文标题】:Opening file in iPhone application - NSFileManager isReadableFileAtPath returning NO 【发布时间】:2013-01-29 15:50:13 【问题描述】:

这是我的代码:

-(BOOL)application:(UIApplication *)application
           openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication
        annotation:(id)annotation 

    if (url != nil && [url isFileURL]) 
        NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

        if ( [[NSFileManager defaultManager] isReadableFileAtPath:[url absoluteString]] ) 
            NSLog(@"READABLE!");
            [[NSFileManager defaultManager] copyItemAtPath:[url absoluteString] toPath:[documentsPath stringByAppendingString:@"/timecode.xml"] error:nil];
         else 
            NSLog(@"NOT READABLE!");
        

        BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:[documentsPath stringByAppendingString:@"/timecode.xml"]];

        if (fileExists) 
            NSLog(@"THERE!");
         else 
            NSLog(@"NOT THERE!");
        
    

由于某种原因,当我从邮件应用程序(或任何其他应用程序,包括良好的阅读器)打开一个文件到我的应用程序时,它说它不可读。显然,该文件不存在。

任何想法为什么会发生这种情况?

【问题讨论】:

【参考方案1】:

因为 URL 不是路径。

[url absoluteString]

看起来像

file:///var/mobile/XXXXXXXX/MyApp.app/Documents/foo.txt

你需要使用

[url path]

改为。

还有两个cmets:

url != nil && [url isFileURL]

是非常多余的。

[url isFileURL]

如果 URL 是 nil,无论如何都会返回 NO(因为消息传递 nil 总是返回零)。

两个:

[documentsPath stringByAppendingString:@"/timecode.xml"]

不要重新发明***/尝试猜测路径分隔符。这行应该

[documentsPath stringByAppendingPathComponent:@"timecode.xml"]

【讨论】:

@objectiveccoder001 欢迎您。经验教训:在尝试进行任何编程之前,请先了解一般情况。

以上是关于在 iPhone 应用程序中打开文件 - NSFileManager isReadableFileAtPath 返回 NO的主要内容,如果未能解决你的问题,请参考以下文章

如何使用我的 iOS 应用程序在我的 iPad/iPhone 中打开 PDF 文件?

如何在 iPhone 地图应用程序中打开 KML 文件?

在 iPhone 应用程序中打开文件 - NSFileManager isReadableFileAtPath 返回 NO

从其他应用程序打开 URL 仅适用于 iPad,在 iPhone 上禁用

如何通过应用程序将 PDF 文件保存在 iPhone 设备中

无法使用我的 iphone 应用程序打开文件