iphone - how to check if the file is a directory , audio , video or image?
Sample Code :
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];NSArray *directory = [[NSFileManager defaultManager] directoryContentsAtPath: documentsDirectory];BOOL isDirectory;for (NSString *item in directory){ BOOL fileExistsAtPath = [[NSFileManager defaultManager] fileExistsAtPath:item isDirectory:&isDirectory]; if (fileExistsAtPath) { if (isDirectory) { //It's a Directory. } } if ([[item pathExtension] isEqualToString:@"png"]) { //This is Image File with .png Extension }}
You can also use Uniform Type Identifiers as explained by Bavarious here.
Sample Code :
NSString *file = @"…"; // path to some fileCFStringRef 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");CFRelease(fileUTI);
Look at the NSURL
class. You can for example see if the url is a file url by saying isFileUrl
.
Additionally you can get the last component of the url (usually the file name) by doing:
NSString *filename = [[url path] lastPathComponent];
These can help you do what you need, but more importantly look at the NSURL
documentation.
For any Swift lovers, coming to this question trying to check if a file is a directory here you go:
////// Check if NSURL is a directory///internal func fileIsDir(fileURL: NSURL) -> Bool { var isDir: ObjCBool = false; fileManager.fileExistsAtPath(fileURL.path!, isDirectory: &isDir) return Bool(isDir);}////// Check if a path is a directory///internal func fileIsDir(path: String) -> Bool { var isDir: ObjCBool = false; fileManager.fileExistsAtPath(path, isDirectory: &isDir) return Bool(isDir);}
(Note that I tried doing return isDir as Bool
but it didn't work. But the above Bool initiation seems to work.)