使用 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
)。
附带说明一下,完成后不要忘记 release
dirnameForUnzippedData - 或者直接使用 dirnameForUnzippedData = @"extract";
而不是 alloc/init。
【讨论】:
谢谢,Eiko。你是对的。应该是NSArray *extractedItems = [fileManager contentsOfDirectoryAtPath:dirpath error:NULL];
。如果我要检查返回的目录中的项目是目录还是文件,我应该使用[fileManager fileExistsAtPath:itemAbsolutePath isDirectory:&isDir]
吗?
@Objnewbie 是的,这听起来很合理。以上是关于使用 contentsOfDirectoryAtPath 获取目录中的所有文件/目录时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)