文件在文档目录中停留多长时间(iOS)

Kev*_* Wu 0 caching file objective-c ios

如果我将文件保存到文件夹中的documents目录中,则该文件在磁盘上保留了多长时间?永久保存(在这种情况下,我必须手动删除它)还是每次应用关闭时都将其删除?

Gor*_*ium 7

documents目录中的文件将一直保留,直到用户删除应用程序,重置其设备或您删除代码中的文件为止。另请注意,该documents目录的内容由iTunes备份,因此可以保留的时间比您期望的更长。

另一方面,该tmp目录不是那么持久,并且它的内容不一定会在应用程序重新启动后仍然存在(iTunes也不会对其进行备份),因此如果您不希望持久存储,可以使用此目录。/Library/Caches/相似之处在于它不备份,但具有持久性。来自有关tmp以下内容的文档:

tmp当您的应用未运行时,系统会定期清除这些文件[在文件夹中]。因此,您无法在应用终止后依赖这些文件的持久性。

基本上,如果您想短时间存储某些东西,而操作系统是否删除了它也没关系,请使用tmp。如果您希望某些东西可以持久地启动应用程序,但仍然无法通过iTunes备份,请使用“ cache库”中的文件夹。您需要持久的东西并进行备份,使用documents

根据评论的额外信息

如果重新启动应用程序时图像应消失,则应使用tmp。但是请注意,tmp不能保证在重新启动应用程序后清除该目录。当然,下次加载应用程序时,图像仍然可能在那里。确实有点赌博。如果杀死图像至关重要,请在适当的地方手动擦拭它们:

NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
for (NSString *file in tmpDirectory) {
    [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
}
Run Code Online (Sandbox Code Playgroud)