¿Cómo comprobar si existe una carpeta (directorio) en Cocoa usando Objective-C?¿Cómo verificar si existe una carpeta en Cocoa & Objective-C?
Respuesta
Utilice NSFileManager
método fileExistsAtPath:isDirectory:
. Consulte los documentos de Apple here.
[NSFileManager fileExistsAtPath: isDirectory:]
Returns a Boolean value that indicates whether a specified file exists.
- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory
Parameters
path
The path of a file or directory. If path begins with a tilde (~), it must first be expanded with stringByExpandingTildeInPath, or this method will return NO.
isDirectory
Upon return, contains YES if path is a directory or if the final path element is a symbolic link that points to a directory, otherwise contains NO. If path doesn’t exist, the return value is undefined. Pass NULL if you do not need this information.
Return Value
YES if there is a file or directory at path, otherwise NO. If path specifies a symbolic link, this method traverses the link and returns YES or NO based on the existence of the file or directory at the link destination.
La primera línea confundió que 'fileExists..' es un método de clase. Amablemente actualiza la respuesta. Podría haberlo hecho, pero es una respuesta demasiado antigua, si es eso sería mejor. –
Un buen consejo de Apple en el NSFileManager.h respecto a la revisión del sistema de archivos:
"Es mucho mejor para intentar una operación (como la carga de una archivo o crear un directorio) y manejar el error con elegancia de lo que es tratar de averiguar con anticipación si la operación tendrá éxito. Intentar predicar el comportamiento basado en el estado actual del sistema de archivos o un archivo particular en el sistema de archivos es alentador impar comportamiento frente a las condiciones de carrera del sistema de archivos ".
También se menciona en los documentos: http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/ NSFileManager/fileExistsAtPath: – Monolo
NSFileManager es el mejor lugar para buscar API relacionadas con archivos. La API específico que necesita es - fileExistsAtPath:isDirectory:
.
Ejemplo:
NSString *pathToFile = @"...";
BOOL isDir = NO;
BOOL isFile = [[NSFileManager defaultManager] fileExistsAtPath:pathToFile isDirectory:&isDir];
if(isFile)
{
//it is a file, process it here how ever you like, check isDir to see if its a directory
}
else
{
//not a file, this is an error, handle it!
}
Si dispone de un objeto NSURL
como path
, es mejor utilizar la ruta para convertirlo en NSString
.
NSFileManager*fm = [NSFileManager defaultManager];
NSURL* path = [[[fm URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] objectAtIndex:0]
URLByAppendingPathComponent:@"photos"];
NSError *theError = nil;
if(![fm fileExistsAtPath:[path path]]){
NSLog(@"dir doesn't exists");
}else
NSLog(@"dir exists");
- 1. ¿Cómo verificar si existe una clave appSettings?
- 2. ¿Cómo verificar si existe una propiedad?
- 3. ¿Cómo comprobar si un archivo existe en una carpeta?
- 4. Cómo usar SharpSVN para (rápidamente) verificar si existe una carpeta/archivo remoto en el servidor
- 5. ¿Cómo puedo verificar si existe una cadena en una matriz?
- 6. ¿Cómo creo una carpeta en VB si no existe?
- 7. ¿Cómo identificar si existe un índice Lucene.Net en una carpeta?
- 8. Crear una carpeta si no existe
- 9. ¿Cómo verificar si existe una clave en ** kwargs?
- 10. ¿Cómo puedo verificar si existe una variable en Scheme?
- 11. ¿Cómo puedo verificar si existe una cadena en otra cadena?
- 12. ¿Cómo verificar si existe una restricción en el servidor Sql?
- 13. ¿Cómo verificar una DLL si existe una función?
- 14. Cómo encontrar si existe una carpeta en la Bandeja de entrada y crear si no existe
- 15. ¿Cómo puedo verificar si existe un archivo en Perl?
- 16. ¿Cómo verificar si existe un cierto ensamblaje?
- 17. ¿Cómo debo verificar si existe Gravatar?
- 18. ¿Cómo puedo verificar si existe un directorio?
- 19. EXTJS - ¿Cómo verificar si el elemento existe?
- 20. ¿Cómo verificar si existe un usuario postgres?
- 21. ¿Cómo verificar utilizando la funcionalidad PHP FTP si la carpeta existe en el servidor o no?
- 22. ¿Cómo puedo controlar una carpeta con Cocoa?
- 23. ¿Cómo verificar si existe un procedimiento almacenado?
- 24. ¿cómo puedo verificar si existe un archivo?
- 25. ¿Cómo puedo crear una carpeta, si no existe, desde .vimrc?
- 26. ¿Cómo saber si existe una carpeta y cómo crear una carpeta?
- 27. C# ¿Cómo puedo verificar si existe una URL/es válida?
- 28. ¿Cómo verificar si existe una dirección de correo electrónico?
- 29. Entity Framework - ¿Cómo verificar si existe una tabla?
- 30. Crear carpeta si no existe en Google Drive
No exactamente. Porque está pasando un puntero a bool como 'isDirectory'. Significa que si hay un archivo con ese nombre, este método devuelve SÍ y escribe 'NO' en el puntero' isDirectory'. – yas375
Pero todo es un archivo en Unix. – uchuugaka