1

我将图像文件存储在缓存目录中。稍后我想从缓存目录中获取所有图像文件列表。我正在使用以下代码来获取所有文件。

[fileManager contentsOfDirectoryAtPath:pathForCacheDirectory error:&error]

如何从中分离图像文件。图像文件可以是任何格式。

提前致谢。

4

5 回答 5

3
// Store your supported image Extensions
NSArray *extensionList = [NSArray arrayWithObjects:@"jpg", @"jpeg", @"png", @"gif", @"bmp", nil];

// Grab the content Directory
NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathForCacheDirectory error:&error];

NSMutableArray *listOfImageFiles = [NSMutableArray arrayWithCapacity:0];

// Check for Images of supported type
for(NSString *filepath in contents){
    if ([extensionList containsObject:[filepath pathExtension]])
    {
        // Found Image File
        [listOfImageFiles addObject:filepath];
    }
}
NSLog(@"Lisf of Image Files : %@",listOfImageFiles);
于 2013-03-22T06:23:57.087 回答
1

一种残酷的方法是枚举您认为它是图像的所有扩展。更好的方法是使用 UTI,检查这个Get the type of a file in Cocoa

于 2013-03-22T06:05:26.173 回答
1

您可以使用扩展名过滤文件。

 NSArray *contents = [fileManager contentsOfDirectoryAtPath:pathForCacheDirectory error:&error];
    for(NSString *filepath in contents){
       if ([[filepath pathExtension] isEqualToString: @"png"]) {
            // Your code
        }
    }
于 2013-03-22T06:11:39.280 回答
1

试试这个,希望这会有所帮助。

 NSArray * contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:YOURPATH error:NULL];
    NSMutableArray * onlyImages = [[NSMutableArray alloc]init];
    for (NSString * contentPath in contents) {
        NSString * lastPath = [contentPath pathExtension];

        if ([lastPath isEqualToString:@"jpg"] || [lastPath isEqualToString:@"jpeg"] || [lastPath isEqualToString:@"png"] ||  /* any other */ ) {
            [onlyImages addObject:contentPath]; // only images
        }

    }
于 2013-03-22T06:27:16.680 回答
0

看到这个并检查:

CFStringRef fileExtension = (CFStringRef) [file pathExtension];
CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);

if (UTTypeConformsTo(fileUTI, kUTTypeImage)) NSLog(@"It's an image");
else if (UTTypeConformsTo(fileUTI, kUTTypeMovie)) NSLog(@"It's a movie");
else if (UTTypeConformsTo(fileUTI, kUTTypeText)) NSLog(@"It's text");
else  NSLog(@"It's audio");
于 2013-03-22T06:04:51.593 回答