2012-04-01 151 views
1

我在應用程序的「文檔」文件夾中有大量空的臨時文件夾。刪除iOS中的空文件夾?

如何將它們全部刪除?

我想:

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

的這段代碼只刪除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]; 
}