以编程方式从NSCachesDirectory中删除文件

时间:2013-02-25 10:29:14

标签: ios objective-c cocoa-touch

如果我在我的应用中以编程方式下载NSCachesDirectory文件,是否也可以通过编程方式删除文件?

4 个答案:

答案 0 :(得分:6)

从目录获取文件的完整路径可能有很多方法,以下是其中之一。

NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *mainPath    = [myPathList  objectAtIndex:0];

mainPath = [mainPath stringByAppendingPathComponent:DirectoryName];

此处 mainPath 是文件的完整路径。

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
BOOL fileExists = [fileManager fileExistsAtPath:mainPath];

if (fileExists)
{
     BOOL success = [fileManager removeItemAtPath:mainPath error:&error];
     if (!success) NSLog(@"Error: %@", [error localizedDescription]);

}

答案 1 :(得分:6)

我认为这段代码应该对您有用:

NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:directory error:nil];

for (NSString *filename in fileArray)  {
    [fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL];
}

答案 2 :(得分:3)

结合anurag和iPatel

我们得到这个最终代码,它将从缓存目录中清除所有内容

    NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *mainPath    = [myPathList  objectAtIndex:0];
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:mainPath error:nil];
for (NSString *filename in fileArray)  {
    [fileMgr removeItemAtPath:[mainPath stringByAppendingPathComponent:filename] error:NULL];
}

答案 3 :(得分:1)

如果您想要专门删除UIWebView缓存,那么这可能会有所帮助:

for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
     if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {
         [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
     }
}