Contents

fileExists(atPath:isDirectory:)

Returns a Boolean value that indicates whether a file or directory exists at a specified path.

Declaration

func fileExists(atPath path: String, isDirectory: UnsafeMutablePointer<ObjCBool>?) -> Bool

Parameters

  • path:

    The path of a file or directory. If path begins with a tilde (~), it must first be expanded with Expandingtildeinpath, or this method will return False.

  • isDirectory:

    Upon return, contains True if path is a directory or if the final path element is a symbolic link that points to a directory; otherwise, contains False. If path doesn’t exist, this value is undefined upon return. Pass NULL if you do not need this information.

Return Value

true if a file at the specified path exists, or false if the file’s does not exist or its existence could not be determined.

Discussion

If the file at path is inaccessible to your app, perhaps because one or more parent directories are inaccessible, this method returns false. If the final element in path specifies a symbolic link, this method traverses the link and returns true or false based on the existence of the file at the link destination.

If you need to further determine whether path is a package, use the isFilePackage(atPath:) method of NSWorkspace.

The following example code gets an array that identifies the fonts in the user’s fonts directory:

NSArray *subpaths;
BOOL isDir;
 
NSArray *paths = NSSearchPathForDirectoriesInDomains
                     (NSLibraryDirectory, NSUserDomainMask, YES);
 
if ([paths count] == 1) {
 
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    NSString *fontPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Fonts"];
 
    if ([fileManager fileExistsAtPath:fontPath isDirectory:&isDir] && isDir) {
        subpaths = [fileManager subpathsAtPath:fontPath];
// ...

See Also

Related Documentation

Determining access to files