6

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

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

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

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

4

5 回答 5

5

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

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

于 2010-07-01T14:19:10.000 回答
3

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

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

于 2010-07-01T14:32:56.787 回答
3

它不会自己清理干净。

使用Windows 磁盘清理来执行此操作。

于 2010-07-01T14:35:34.127 回答
2

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

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

于 2010-07-01T14:32:51.667 回答
2

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

于 2010-07-01T14:35:21.847 回答