删除iOS中的空文件夹?

时间:2012-04-01 17:46:47

标签: objective-c ios5 nsfilemanager

我在app的Document文件夹中有很多空的临时文件夹。

如何删除它们?

我试过了:

NSArray *folders = [[NSFileManager defaultManager]contentsOfDirectoryAtURL:[self applicationDocumentsDirectory] includingPropertiesForKeys:[NSArray arrayWithObject:@"NSURLIsDirectoryKey"] options:0 error:nil];
if (folders) {
    for (NSURL *url in folders) {
        [[NSFileManager defaultManager]removeItemAtURL:url error:nil];
    }
}

但它会删除所有文件夹

1 个答案:

答案 0 :(得分:2)

此代码段仅删除 directiories

NSFileManager *fileManager = [[NSFileManager alloc] init];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil];
for (NSString *file in files) {
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:file];
    NSError *error;
    if ([[fileManager contentsOfDirectoryAtPath:fullPath error:&error] count]==0) {
        // check if number of files == 0 ==> empty directory
        if (!error) { 
            // check if error set (fullPath is not a directory and we should leave it alone)
            [fileManager removeItemAtPath:fullPath error:nil];
        }
    }
}

如果您只想删除所有目录非空),则可以将代码段简化为:

NSFileManager *fileManager = [[NSFileManager alloc] init];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:nil];
for (NSString *file in files) {
    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:file];
    if ([fileManager contentsOfDirectoryAtPath:fullPath error:nil])
        [fileManager removeItemAtPath:fullPath error:nil];
}