1. 程式人生 > >iOS 刪除資料夾下所有檔案

iOS 刪除資料夾下所有檔案

源:http://www.cnblogs.com/easonoutlook/archive/2012/09/09/2677893.html

有時候需要在iOS系統裡面,刪除指定資料夾的內容,資料夾裡面可能是檔案,也可能包含有資料夾。

刪除指定型別的檔案。方法如下:

NSString *extension = @"m4r"; NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:NULL];  NSEnumerator *e = [contents objectEnumerator]; NSString *filename; while ((filename = [e nextObject])) { if ([[filename pathExtension] isEqualToString:extension]) {
[fileManager removeItemAtPath:[documentsDirectory stringByAppendingPathComponent:filename] error:NULL]; } }

刪除sandbox 裡面的Documents目錄裡面的資料夾

NSArray *contents,裡面對應的是資料夾裡面的內容,可以使用NSLog()列印輸出

然後通過NSEnumerator枚舉出來。判斷副檔名是否為m4r,如果是,則刪除。

用上邊的辦法封裝了一個方法,傳入path和副檔名字首:

-(void)removeContentsOfDirectory:(NSString*)directory withExtension:(NSString*)extension
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *contents = [fileManager contentsOfDirectoryAtPath:directory error:NULL];
    NSEnumerator *e = [contents objectEnumerator];
    NSString *filename;
    while ((filename = [e nextObject])) {
        if (extension != nil) {
            if ([[filename pathExtension] hasPrefix:extension]) {
                
                [fileManager removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL];
            }
        }else{
            [fileManager removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL];
        }
    }
}