在 Objective-C 中的指定路径获取具有特定扩展名的文件列表
Posted
技术标签:
【中文标题】在 Objective-C 中的指定路径获取具有特定扩展名的文件列表【英文标题】:Get list of files with specific extensions at a specified path in Objective-C 【发布时间】:2011-08-03 04:10:42 【问题描述】:我对 Objective-C 还是很陌生。我正在开发一个 Cocoa 应用程序。 目前,我正在 Objective C 中寻找与此 C# 代码等效的代码:
string[] fileList = Directory.GetFiles(DownloadPath, "*.jpg");
返回的字符串不一定是完整路径,因为我只需要文件名。我已经尝试过 NSFileManager 但到目前为止还没有好。谢谢。
编辑:我对 NSFileManager 的尝试:
[someFileManager contentsOfDirectoryAtPath:path error:nil];
我还想问:'path'的格式是什么?这听起来很简单,但我对 MAC OS 文件系统一无所知。我使用的路径来自 [NSOpenPanel URLs],它们看起来像这样:
file://localhost/Users/alex/Movies/
有时我得到结果,但有时返回的 NSArray 只是空的。我对此感到很困惑,所以任何帮助将不胜感激。
编辑2: 这里的答案:NSPredicate endswith multiple files,可能是一个更好的选择。不过,谢谢您的回答。
【问题讨论】:
NSPredicate endswith multiple files的可能重复 【参考方案1】:这段代码应该可以工作:
NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
NSArray *jpgFiles = [dirFiles filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"]];
【讨论】:
我正在使用 NSOpenPanel 来获取路径。路径如下所示: file://localhost/alex/temp/Louis/ ,我没有使用 [NSFileManager contentsOf...] 得到任何东西,基本上是一个空的 NSArray。你能告诉我我用于路径的 URL 是否正确吗? 您需要将您的 url('file://...') 转换为普通的 POSIX 路径。你可以这样做:NSString *filepath = [fileURL path];
.【参考方案2】:
其实你需要这样的东西
NSArray *dirFiles = [fileManager contentsOfDirectoryAtURL:[NSURL fileURLWithPath:documentsDir] includingPropertiesForKeys:[NSArray array] options:0 error:nil] ;
NSArray *filteredFiles = [dirFiles filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.absoluteString ENDSWITH '.jpg'"]] ;
因为 contentsOfDirectoryAtURL: 返回 NSURL 的数组,所以只使用 "self ENDSWITH '.jpg'" 会崩溃。
【讨论】:
【参考方案3】:也许是这样的:
NSFileManager * fileMan = [[NSFileManager alloc] init];
NSArray * files = [fileMan contentsOfDirectoryAtPath:@"mypath/blah" error:nil];
if (files)
for(int index=0;index<files.count;index++)
NSString * file = [files objectAtIndex:index];
if( [[file pathExtension] compare: @"jpg"] == NSOrderedSame )
// do something with files that end with .jpg
[fileMan release];
【讨论】:
以上是关于在 Objective-C 中的指定路径获取具有特定扩展名的文件列表的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C - 具有错误索引路径的 UICollectionView
如何在 Objective-C 中获取当前工作目录的绝对路径?
Objective-C 如何避免在具有 UIBezierPath 笔触颜色的相同颜色图像上绘图