Frage

Wie kann man überprüfen, ob ein Ordner (Verzeichnis) existiert in Cocoa mit Objective-C?

War es hilfreich?

Lösung

Mit NSFileManager der fileExistsAtPath:isDirectory: Methode. Siehe Apples docs hier .

Andere Tipps

Einige gute Ratschläge von Apple in der NSFileManager.h in Bezug auf das Dateisystem überprüft:

"Es ist viel besser, eine Operation zu versuchen (wie Laden einer Datei oder ein Verzeichnis erstellen) und behandeln den Fehler anmutig, als es vor der Zeit, um herauszufinden, um zu versuchen, ist, ob die Operation erfolgreich sein wird. Der Versuch, das Verhalten Prädikat basiert auf der aktuellen Status des Dateisystems oder einer bestimmten Datei auf dem Dateisystem in das Gesicht der Dateisystem race Conditions merkwürdiges Verhalten ist ermutigend. "

[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.

NSFileManager ist der beste Platz für Datei bezogenen APIs zu suchen. Die spezifische API Sie benötigen, ist   - fileExistsAtPath:isDirectory:.

Beispiel:

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

Wenn Sie ein NSURL Objekt als path haben, ist es besser Pfad verwenden es in NSString zu konvertieren.

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");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top