2012-03-02 10 views
9

Nesneyi c nesnesinde silmek için aşağıdaki kodu buldum, ancak yalnızca Caches dizini altındaki tüm dosyaları silmek istiyorum ve dizini Caches kendisi.Amaç c: Bir dizinin altındaki tüm dosyaları yalnızca silme ama dizinin kendisinde sakla

Birisi bunu yapma yöntemini önerebilir mi?

sayesinde bu dizinde dosyalar arasında

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

ne dersin yeniden oluşturun silindikten sonra Önbellekler klasörünü? – ohho

+0

Dizini kaldırabilir ve daha sonra doğru izinleri aldığınızdan emin olmanıza rağmen yeniden oluşturabilirsiniz. – dreamlax

+0

İyi fikir, teşekkürler –

cevap

39

Döngü GÜNCEL

NSFileManager *filemgr; 

filemgr = [NSFileManager defaultManager]; 

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

.

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

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

Öneri için teşekkürler, ancak programı derlerken hata var. 'Konu 1: EXC_BAD_ACCESS (kod = 1, adres = 0x8b8c0001)' –

+0

Hangi satırda hata gösteriliyor? , kodu ayıkla ve söyle. – HarshIT

+0

Benim hatam, dosya adı sadece bir isim, tam yol almak için dizini eklemek zorunda – 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]; 
    } 
}