使用 contentsOfDirectoryAtPath 获取目录中的所有文件/目录时出现问题

Posted

技术标签:

【中文标题】使用 contentsOfDirectoryAtPath 获取目录中的所有文件/目录时出现问题【英文标题】:Problem in getting all the files/dirs in a dir with contentsOfDirectoryAtPath 【发布时间】:2011-06-23 09:53:47 【问题描述】:

我有一个 zip 文件,我将其解压缩到 Documents 目录下的“extract”目录中(目录及其内容已正确创建)。然后我会对新目录中的每个项目做一些事情,如果它是一个文件或一个目录。我使用 NSFileManager 的 contentsOfDirectoryAtPath 方法。 问题是数组extractedItems 总是返回null,我不知道自己做错了什么。

NSString *dirnameForUnzippedData = [[NSString alloc] initWithString:@"extract"];
NSString *dirpath = [documentsDirectory stringByAppendingPathComponent:dirnameForUnzippedData];

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *extractedItems = [fileManager contentsOfDirectoryAtPath:dirnameForUnzippedData error:NULL];

for (NSString *item in extractedItems)  ... 

【问题讨论】:

【参考方案1】:

看来您正在寻找错误的路径。您的代码未使用 dirpath(或您的 documentsDirectory)。

附带说明一下,完成后不要忘记 releasedirnameForUnzippedData - 或者直接使用 dirnameForUnzippedData = @"extract"; 而不是 alloc/init。

【讨论】:

谢谢,Eiko。你是对的。应该是NSArray *extractedItems = [fileManager contentsOfDirectoryAtPath:dirpath error:NULL];。如果我要检查返回的目录中的项目是目录还是文件,我应该使用[fileManager fileExistsAtPath:itemAbsolutePath isDirectory:&isDir]吗? @Objnewbie 是的,这听起来很合理。

以上是关于使用 contentsOfDirectoryAtPath 获取目录中的所有文件/目录时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)