检查包中是否存在文件

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

如果你只想知道它是否在那里,所以你可以决定是否加载它,我只是试图加载它,并检查返回的对象是否为零。 如果是这样,你知道它不存在于包中。

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

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

话虽如此,但在加载文件之前先检查文件是否存在通常是一个坏主意。 根据NSFileManager fileExistsAtPath:上的Apple文档NSFileManager fileExistsAtPath:

不build议尝试基于文件系统的当前状态或文件系统上的特定文件来预测行为。 这样做会在文件系统竞争条件下导致奇怪的行为。 尝试一个操作(比如加载文件或创build一个目录),检查错误,处理任何错误要比试图提前弄清楚操作是否成功要好得多。 有关文件系统争用条件的更多信息,请参阅安全代码指南中的“避免竞争条件和不安全的文件操作”