目标c:如何只删除一个目录下的所有文件,但保留目录本身

问题描述:

我发现了下面的代码来删除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

遍历该目录中的文件。

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

- (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]; 
    } 
}