我正在开发一个程序,它会生成一些临时文件,等待用户输入一些内容,然后使用这些临时文件进行操作。
我想知道我是否能够可靠地预期这些临时文件在完成之前不会消失(例如,当用户工作时它们会消失吗?)。
显然,我可以在appdata中创建自己的文件夹,并将其用于临时文件。但是使用C#的Path.GetTempFileName()
或Path.GetTempPath() + somename
会更容易。何时会删除以这种方式创建的文件?
为了澄清,我不是在寻找如何创建临时文件,而是在保留GetTempPath()
中创建的临时文件的时间长度,以及在使用之前是否足够长以等待用户输入它们。
答案 0 :(得分:2)
我不知道Windows中有任何自动删除临时文件的进程。用户可能已设置了清理作业,但您可以合理地期望您的文件在一两天内保持单独使用。
为了进行比较,当您在Outlook中打开附件时,它会将附件复制到临时文件并启动关联的应用程序。如果用户永远不会关闭相关的应用程序,这些临时附件文件可能需要无限期保留。
答案 1 :(得分:2)
这是完全安全的,你的直觉100%正确 - 这是处理临时文件的方法,只要你记得以后清理它们。
调用GetTempPath()
只会将您指向一个放置临时文件的安全位置。这是获得环境变量PATH
的价值的现代等价物。该目录从不自动清除 - 您经常会发现它充满了古老的垃圾。
答案 2 :(得分:2)
同意蒂姆。至少在XP中,清理temp文件夹中的文件的责任在于将它们放在第一位的程序。 即使使用像Vista / 7这样的新操作系统,我也不认为%TMP%文件夹会发生任何Windows自动清理。
答案 3 :(得分:2)
它不会自行清理。
使用Windows Disk Cleanup执行此操作。
答案 4 :(得分:1)
据我所知,临时文件将一直存在,直到您以编程方式删除,或者用户清理它们(如使用磁盘清理实用程序或手动删除它们)。
使用临时文件时,我总是保留创建的文件名,并在完成后尝试删除文件,否则我注意到我在大时间内在临时目录中累积了大量临时文件