保留临时文件的时间长度?

时间:2010-07-01 14:14:33

标签: c# .net file temporary-files

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

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

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

为了澄清,我不是在寻找如何创建临时文件,而是在保留GetTempPath()中创建的临时文件的时间长度,以及在使用之前是否足够长以等待用户输入它们。

5 个答案:

答案 0 :(得分:2)

我不知道Windows中有任何自动删除临时文件的进程。用户可能已设置了清理作业,但您可以合理地期望您的文件在一两天内保持单独使用。

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

答案 1 :(得分:2)

这是完全安全的,你的直觉100%正确 - 这是处理临时文件的方法,只要你记得以后清理它们。

调用GetTempPath()只会将您指向一个放置临时文件的安全位置。这是获得环境变量PATH的价值的现代等价物。该目录从不自动清除 - 您经常会发现它充满了古老的垃圾。

答案 2 :(得分:2)

同意蒂姆。至少在XP中,清理temp文件夹中的文件的责任在于将它们放在第一位的程序。 即使使用像Vista / 7这样的新操作系统,我也不认为%TMP%文件夹会发生任何Windows自动清理。

答案 3 :(得分:2)

它不会自行清理。

使用Windows Disk Cleanup执行此操作。

答案 4 :(得分:1)

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

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