ver todas seguridad pasar las fotos descargar copia conectar como archivos apple aparecen iphone ios nsfilemanager

seguridad - no me aparecen todas las fotos del iphone en el pc



iphone: ¿cómo verificar si el archivo es un directorio, audio, video o imagen? (5)

La respuesta actualizada de Evdzhan para Swift 4.0:

// // Check if NSURL is a directory // func fileIsDir(fileURL: NSURL) -> Bool { var isDir: ObjCBool = false; FileManager.default.fileExists(atPath: fileURL.path!, isDirectory: &isDir) return isDir.boolValue } // // Check if a path is a directory // func fileIsDir(path: String) -> Bool { var isDir: ObjCBool = false; FileManager.default.fileExists(atPath: path, isDirectory: &isDir) return isDir.boolValue }

A continuación, mi programa muestra los contenidos del directorio de Documentos y se muestra en un tableView. Pero el directorio de Documentos contiene algunos directorios, algunos de audio, algunos de video y algunas imágenes, etc.

NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docsDir = [dirPaths objectAtIndex:0]; fileType = @"" ; NSString *subDirectoryPath = [docsDir stringByAppendingPathComponent:fileType]; NSLog(@"path : %@",subDirectoryPath); files = [[NSMutableArray alloc] initWithArray:[[NSFileManager defaultManager] contentsOfDirectoryAtPath:subDirectoryPath error:nil]]; NSLog(@"files ::::: %@ ",[files description]);

Entonces, quiero verificar si el archivo es el directorio, entonces la imagen del directorio se puede mostrar en el imageView de la celda. Lo mismo para audio, video e imagen.

Busqué en NSFileManager classReference, pero no obtuve una solución.

Como hacer esto ?


Mira la clase NSURL . Por ejemplo, puede ver si la url es una url de archivo diciendo isFileUrl .

Además, puede obtener el último componente de la url (generalmente el nombre del archivo) haciendo:

NSString *filename = [[url path] lastPathComponent];

Estos pueden ayudarlo a hacer lo que necesita, pero lo más importante es mirar la documentación de NSURL .


Para cualquier amante de Swift, al llegar a esta pregunta tratando de verificar si un archivo es un directorio aquí, ve a:

/// /// 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); }

(Nótese que traté de return isDir as Bool pero no funcionó. Pero la iniciación de Bool anterior parece funcionar).


Solo en caso de tipo de archivo de imagen

-(BOOL)isImageSource:(NSURL*)URL { CGImageSourceRef source = CGImageSourceCreateWithURL((__bridge CFURLRef)URL, NULL); NSString *UTI = (__bridge NSString*)CGImageSourceGetType(source); CFRelease(source); CFArrayRef mySourceTypes = CGImageSourceCopyTypeIdentifiers(); NSArray *array = (__bridge NSArray*)mySourceTypes; CFRelease(mySourceTypes); return [array containsObject:UTI]; }


Código de muestra :

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 } }

También puede usar identificadores de tipo uniforme como explica Bavarious here .

Código de muestra :

NSString *file = @"…"; // path to some file 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"); CFRelease(fileUTI);