2

我们如何在获取文件之前检查文件是否存在于应用程序中加载的外部包中?

4

2 回答 2

13

要检查包中是否存在文件,请使用NSBundle该类。

NSString *path = [[NSBundle mainBundle] 
                            pathForResource:@"somefileinbundle" 
                            ofType:@"png"];
if (!path)
   NSLog(@"Unable to find file in bundle");

然而,话虽如此,在尝试加载文件之前先检查文件是否存在通常不是一个好主意。根据Apple docs onNSFileManager fileExistsAtPath:

不建议尝试基于文件系统的当前状态或文件系统上的特定文件来预测行为。在文件系统竞争条件的情况下,这样做可能会导致奇怪的行为。尝试操作(例如加载文件或创建目录)、检查错误并优雅地处理任何错误比尝试提前确定操作是否成功要好得多。有关文件系统竞争条件的更多信息,请参阅安全编码指南中的“避免竞争条件和不安全的文件操作”

于 2011-09-20T14:52:54.047 回答
4

如果您只想知道它是否存在以便决定是否加载它,我只是尝试加载它并检查返回的对象是否为零。如果是,您知道它在捆绑包中不存在。

于 2011-04-05T00:20:01.987 回答