【问题标题】:How do I get an NSArray of filenames of all files in a given directory in my app?如何在我的应用程序中获取给定目录中所有文件的文件名的 NSArray?
【发布时间】:2010-11-19 07:30:22
【问题描述】:

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

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

【问题讨论】:

    标签: iphone xcode filesystems nsfilemanager nsbundle


    【解决方案1】:

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

    为此,您可以从 Finder 中拖动文件夹,并在出现提示时选择文件夹引用。

    一旦你有了它,你应该能够通过以下方式获取文件夹的内容:

    NSError *error = nil;
    
    NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath]
                                stringByAppendingPathComponent:@"YourFolder"];
    
    NSArray  *yourFolderContents = [[NSFileManager defaultManager] 
                                    contentsOfDirectoryAtPath:yourFolderPath error:&error];
    

    【讨论】:

    • 就我而言,stringByAppendingString:@"YourFolder" 不起作用,因为最终路径缺少“/”。我建议改用 stringByAppendingPathComponent:@"YourFolder"。这将包括 / 字符。整行应该是: NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YourFolder"];
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      现在,你就是这样做的:

      1. 从 Finder 中,将文件夹拖放到项目的导航器中,然后会出现下一个弹出窗口:
      2. 正如您在该屏幕截图中所见,您必须选择创建文件夹引用
      3. 做这篇文章的解决方案告诉你做什么。我的意思是:

        NSError *error = nil;

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-26
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-16
        • 2012-08-11
        相关资源
        最近更新 更多