目标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];
答
遍历该目录中的文件。
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:directory error:nil];
for (NSString *filename in fileArray) {
[fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL];
}
答
- (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];
}
}
如何重新创建删除后Caches文件夹? – ohho 2012-03-02 08:32:06
您可以删除目录然后重新创建它,但您必须确保您保持正确的权限。 – dreamlax 2012-03-02 08:32:37
好主意,谢谢 – 2012-03-02 08:41:26