2012-03-02 67 views
9

我發現了下面的代碼來刪除objective-c中的文件,但我只想刪除目錄下的所有文件,並保留目錄Caches本身。目標c:如何只刪除一個目錄下的所有文件,但保留目錄本身

有人可以建議這樣做的方法嗎?

感謝

NSFileManager *filemgr; 

filemgr = [NSFileManager defaultManager]; 

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

修訂

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

如何重新創建刪除後Caches文件夾? – ohho 2012-03-02 08:32:06

+0

您可以刪除目錄然後重新創建它,但您必須確保您保持正確的權限。 – dreamlax 2012-03-02 08:32:37

+0

好主意,謝謝 – 2012-03-02 08:41:26

回答

39

遍歷該目錄中的文件。

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

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

感謝您的建議,但在編譯程序時出錯。 '線程1:EXC_BAD_ACCESS(代碼= 1,地址= 0x8b8c0001)' – 2012-03-02 08:50:55

+0

在哪一行顯示錯誤? ,調試代碼並說。 – HarshIT 2012-03-02 09:03:32

+0

我的錯誤,文件名只是名稱,必須追加目錄才能獲得完整路徑 – Hanon 2012-03-02 09:03:33

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]; 
    } 
} 
相關問題