2012-03-02 16 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

どのように削除した後にキャッシュフォルダを再作成しますでしょうか? – ohho

+0

ディレクトリを削除してから再作成することもできますが、正しいアクセス許可を維持しておく必要があります。 – dreamlax

+0

良いアイデア、ありがとう –

答えて

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) ' –

+0

どの行にエラーが表示されますか? 、コードをデバッグして言う。 – HarshIT

+0

私の間違いは、ファイル名はちょうど名前です、フルパスを得るためにディレクトリを追加する必要があります – 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]; 
    } 
} 
関連する問題