2012-03-02 6 views
9

Znalazłem poniższy kod, aby usunąć plik w cel-c, ale chcę tylko usunąć wszystkie pliki z katalogu Caches i zachować katalog Caches samo.Cel c: Jak tylko usunąć cały plik z katalogu, ale zachować sam katalog

Czy ktoś może zaproponować metodę, aby to zrobić?

Dzięki

NSFileManager *filemgr; 

filemgr = [NSFileManager defaultManager]; 

if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL] == YES) 
     NSLog (@"Remove successful"); 
else 
     NSLog (@"Remove failed"); 

AKTUALIZACJA

NSFileManager *filemgr; 

filemgr = [NSFileManager defaultManager]; 

if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL] == YES) 
    NSLog (@"Remove successful"); 
else 
    NSLog (@"Remove failed"); 

[filemgr createDirectoryAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] withIntermediateDirectories:NO attributes:nil error:nil]; 
+0

Jak o ponowne utworzenie folderu pamięć podręczną po usunięciu? – ohho

+0

Możesz usunąć katalog, a następnie go odtworzyć, chociaż musisz mieć pewność, że masz odpowiednie uprawnienia. – dreamlax

+0

Dobry pomysł, dziękuję –

Odpowiedz

39

Loop poprzez pliki w tym katalogu.

NSFileManager *fileMgr = [NSFileManager defaultManager]; 
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:directory error:nil]; 
for (NSString *filename in fileArray) { 

    [fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL]; 
} 
+0

Dzięki za sugestię, ale dostałem błąd podczas kompilacji programu. "Wątek 1: EXC_BAD_ACCESS (kod = 1, adres = 0x8b8c0001)' –

+0

W której linii pokazuje błąd? , debuguj kod i powiedz. – HarshIT

+0

Mój błąd, nazwa pliku to tylko nazwa, należy dodać katalog, aby uzyskać pełną ścieżkę. – Hanon

0
- (void) removeDocuments 
{ 
    NSString *docDir = // get documents directory 
    NSString *cacheDir = [docDir stringByAppendingPathComponent: @"cacheDir"]; 

    // check if cache dir exists 

    // get all files in this directory 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSArray *fileList = [fm contentsOfDirectoryAtPath: cacheDir error: nil]; 

    // remove 
    for(NSInteger i = 0; i < [fileList count]; ++i) 
    { 
     NSString *fp = [fileList objectAtIndex: i]; 
     NSString *remPath = [cacheDir stringByAppendingPathComponent: fp]; 
     [fm removeItemAtPath: remPath error: nil]; 
    } 
} 
Powiązane problemy