Search code examples
cocoadirectoryosx-snow-leopardnsfilemanager

NSFileManager delete contents of directory


How do you delete all the contents of a directory without deleting the directory itself? I want to basically empty a folder yet leave it (and the permissions) intact.


Solution

  • E.g. by using a directory enumerator:

    NSFileManager *fileManager = [[NSFileManager alloc] init];
    NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtPath:path];    
    NSString *file;
    
    while (file = [enumerator nextObject]) {
        NSError *error = nil;
        BOOL result = [fileManager removeItemAtPath:[path stringByAppendingPathComponent:file] error:&error];
    
        if (!result && error) {
            NSLog(@"Error: %@", error);
        }
    }
    

    Swift

    let fileManager = NSFileManager.defaultManager()
    let enumerator = fileManager.enumeratorAtURL(cacheURL, includingPropertiesForKeys: nil, options: nil, errorHandler: nil)
    
    while let file = enumerator?.nextObject() as? String {
        fileManager.removeItemAtURL(cacheURL.URLByAppendingPathComponent(file), error: nil)
    }