C# 临时文件保存的时间长度?

C# 临时文件保存的时间长度?,c#,.net,file,temporary-files,C#,.net,File,Temporary Files,我正在开发一个程序,它将生成一些临时文件,等待用户输入一些内容,然后使用这些临时文件进行操作 我想知道我是否可以可靠地预期这些临时文件在我完全处理完之前不会消失(例如,在用户工作时它们会消失吗?) 显然,我可以在appdata中创建自己的文件夹,并将其用于临时文件。但是使用C#的Path.GetTempFileName()或Path.GetTempPath()+somename会更容易。以这种方式创建的文件何时会被删除 为了澄清这一点,我不是在寻找如何创建临时文件,而是在gettempath()

我正在开发一个程序,它将生成一些临时文件,等待用户输入一些内容,然后使用这些临时文件进行操作

我想知道我是否可以可靠地预期这些临时文件在我完全处理完之前不会消失(例如,在用户工作时它们会消失吗?)

显然,我可以在appdata中创建自己的文件夹,并将其用于临时文件。但是使用C#的
Path.GetTempFileName()
Path.GetTempPath()+somename
会更容易。以这种方式创建的文件何时会被删除


为了澄清这一点,我不是在寻找如何创建临时文件,而是在
gettempath()
中创建的临时文件被保留多长时间,以及在使用它们之前是否需要等待用户输入。

我不知道Windows中有任何自动删除临时文件的过程。用户可能已经设置了清理作业,但您可以合理地预期您的文件至少会被单独放置一两天


为了进行比较,在Outlook中打开附件时,它会将附件复制到临时文件并启动关联的应用程序。如果用户从未关闭关联的应用程序,这些临时附件文件可能需要无限期地保留。

据我所知,临时文件将一直保留,直到您以编程方式删除它们,或者用户清除它们(如使用磁盘清理工具或手动删除它们)


使用临时文件时,我总是保留创建的文件名,并在处理完文件后尝试删除该文件,否则我会注意到,我会在很长时间内在临时目录中累积大量临时文件。

这是完全安全的,你的直觉是100%正确的——这是处理临时文件的方法,只要你记得事后把它们清理干净


调用
GetTempPath()
只会将您指向一个安全的地方放置临时文件。它是获取环境变量
PATH
值的现代等价物。这个目录永远不会自动清除——你会经常发现里面装满了古老的垃圾。

同意蒂姆的观点。至少在XP中,清理临时文件夹中的文件的责任在于将它们放在第一位的程序。
即使使用较新的操作系统,如Vista/7,我也不认为有任何windows自动清理%TMP%文件夹的情况发生

它不会自己清理


用于执行此操作。

临时路径是否被删除?我的包含几个月前的文件,和这个windows安装一样旧…这是我不确定的。查看我对Tim答案的评论,了解为什么我不愿意假设,除非我得到一个具体的答案……从Windows 10和Storage Sense开始,这不再是保证:好吧,可以合理地假设任何自动删除临时文件的操作都不会/无法删除当前打开的文件(如您的示例);但是,当用户工作时,应用程序不会打开我的文件。我问这个问题是因为我曾经打开过一些临时文件(类似于您的Outlook示例),然后将其关闭,如果我再次尝试打开同一个临时文件(仅在关闭后几秒钟),它就会消失。这可能是因为生成应用程序正在删除它们,但我只是想确保没有其他内容。请注意,我接受了您的回答,但我没有实际保存到程序中的临时目录,因为我忘记了另一种模式,该模式可能会将文件保留数天或数周,或者用户希望保留多长时间,在处理它们之前——我认为在这种情况下,我自己的缓存文件夹是一个更好的选择。但是我仍然找不到任何关于临时文件被自动删除的信息,所以我想这可能是因为该程序只是一个合适的软件公民,并在它自己之后进行清理(Outlook可能应该这样做!)好的,谢谢。不幸的是,保持文件打开不是这个程序的一个选项。啊,当我重新阅读了你的问题后,你在编辑那部分内容时发表了评论:)太好了!只要用户不在我的程序中间运行,就应该设置好。尝试启动一组应用程序,并在运行时删除临时目录。记下哪些文件会崩溃。锁定你的文件,这样它们就不会被清理。这就是我想的;我只是想确保它不会在我脸上爆炸。谢谢