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

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

从目录中获取文件的完整path可能有很多种方法,其中之一就是其中之一。

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

这里mainPath是文件的完整path。

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

我认为这个片段应该适合你:

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

结合anurag和iPatel

我们得到这个最终的代码将清除所有的caching目录

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

如果你想特别删除UIWebViewcaching,那么这可能会有所帮助:

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