如何获取应用程序中给定目录中所有文件的NSArray文件名?

时间:2009-08-13 13:43:03

标签: iphone xcode filesystems nsfilemanager nsbundle

我想做的事情似乎很简单:在我的应用程序的给定“目录”中获取一组文件名。但是我越是使用NSFileManager和NSBundle,我发现自己越来越迷失......我只是想在我的iPhone Xcode项目中获取组织在特定目录中的文件的文件名...例如:有问题的目录是称为“图像”(使用Xcode中项目图标下的“添加>新组”创建)并包含10个.png图像。这似乎很简单,但我无处可去。我很感激找到答案的一些帮助。

问:如何获取应用中给定目录中所有文件的NSArray文件名?

3 个答案:

答案 0 :(得分:29)

如果您希望文件夹成为App捆绑包的一部分,则需要在Resources组中创建一个文件夹引用,而不是组(它将在Xcode中显示为蓝色文件夹而不是黄色文件夹)

要执行此操作,请从Finder中拖动文件夹,并在出现提示时选择文件夹参考。

一旦你有了这个,你应该能够获得文件夹的内容:

NSError *error = nil;

NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath]
                            stringByAppendingPathComponent:@"YourFolder"];

NSArray  *yourFolderContents = [[NSFileManager defaultManager] 
                                contentsOfDirectoryAtPath:yourFolderPath error:&error];

答案 1 :(得分:9)

已接受的答案已被弃用多年了。应该使用以下内容。

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error

更新:@macserv在我发布后更新了接受的答案。

答案 2 :(得分:1)

如今,你就是这样做的:

  1. 来自Finder,Drag&将您的文件夹放在项目的导航器中,下一个弹出窗口将显示: enter image description here
  2. 正如您在该屏幕截图中所见,您必须选择创建文件夹参考
  3. 做这篇文章的解决方案告诉你要做什么。我的意思是:

    NSError * error = nil;

    NSString * yourFolderPath = [[[NSBundle mainBundle] resourcePath]                             stringByAppendingPathComponent:@ “YourFolder”];

    NSArray * yourFolderContents = [[NSFileManager defaultManager]                                 contentsOfDirectoryAtPath:yourFolderPath错误:& error];