检索具有读属性的文件并对它们进行分类

我已经从其他地方得到了这个代码,只需要进行一些编辑,就可以通过使用enumeratorAtPath指定的起始path来enumeratorAtPath所有目录。 有了这个代码,我能够检索具有读取属性使用isReadableFileAtPath的某个扩展的文件。 我想要的是检索所有具有已读属性的扩展名的文件,并根据它们的最后一个文件夹名称将它们分类到不同的类别中。
例如,如果我有一个path/a/b/c/example.plist,/ a / b / c / example.plist将被分类在c。

 - (NSString *) retrievePaths { NSFileManager *fileManager = [NSFileManager defaultManager]; NSMutableString *filePaths = [[NSMutableString alloc] init]; NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath:@"/"]; NSString *nextItem = [NSString string]; int i = 0; while( (nextItem = [dirnum nextObject])) { if([[nextItem pathExtension] isEqualToString:@"db"] || [[nextItem pathExtension] isEqualToString:@"sqlitedb"] || [[nextItem pathExtension] isEqualToString:@"sqlite"]) { if([fileManager isReadableFileAtPath:nextItem]) { i++; [filePaths appendFormat:@"%d)",i]; [filePaths appendString:nextItem]; [filePaths appendString:@"\n"]; } } } NSString *format = [NSString stringWithFormat:@"Paths : %@", filePaths]; return format; } 

如果从你的代码中删除条件,你将能够获得所有文件的可读访问权限

 if([[nextItem pathExtension] isEqualToString:@"db"] || [[nextItem pathExtension] isEqualToString:@"sqlitedb"] || [[nextItem pathExtension] isEqualToString:@"sqlite"]) 

编辑

更新function试试这个,会为你工作..

 - (NSString *) retrievePaths { NSFileManager *fileManager = [NSFileManager defaultManager]; NSMutableString *filePaths = [[NSMutableString alloc] init]; NSString *path = @"/Assign/your/path/"; // assign your path NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath:path]; NSString *nextItem = [NSString string]; int i = 0; while( (nextItem = [dirnum nextObject])) { NSString *filePath = [path stringByAppendingPathComponent:nextItem]; BOOL isDir = NO; [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDir]; if(NO == isDir) { if([fileManager isReadableFileAtPath:filePath]) { i++; [filePaths appendFormat:@"%d)",i]; [filePaths appendString:nextItem]; [filePaths appendString:@"\n"]; } } } NSString *format = [NSString stringWithFormat:@"Paths : %@", filePaths]; return format; }