如果我在我的应用程序中以编程方式下载了位于
NSCachesDirectory
的文件,那么也可以以编程方式删除这些文件吗?NSCachesDirectory
的文件,那么也可以以编程方式删除这些文件吗?获取目录中文件的完整路径有多种方法,下面是其中一种。
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]);
}
NSDocumentDirectory
替换为NSCachesDirectory
以从缓存中删除。我是正确的,不是吗? - Emy Alsabbagh我认为这段代码应该适合您使用:
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
我们得到了这个最终代码,将清除缓存目录中的所有内容。
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];
}
UIWebView
的缓存,那么以下内容可能会有所帮助:for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}