问题
If I downloaded files in NSCachesDirectory
programmatically in my app, is it also possible to delete the files programmatically?
回答1:
There may be many way for get full path of File from Directory, following is one of them.
NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *mainPath = [myPathList objectAtIndex:0];
mainPath = [mainPath stringByAppendingPathComponent:DirectoryName];
Here mainPath is Full Path of File.
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]);
}
回答2:
I think this snippet should work for you:
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:directory error:nil];
for (NSString *filename in fileArray) {
[fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL];
}
回答3:
combining anurag and iPatel
we get this final code that will clear all from the caches directory
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];
}
回答4:
If you want to delete specifically UIWebView
cache then this could be helpful:
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}
来源:https://stackoverflow.com/questions/15064854/delete-files-from-nscachesdirectory-programmatically