20

如果我使用 Path.GetTempPath() 创建一些文件 - 它会在某个阶段自动被删除,还是由我来删除它?

4

4 回答 4

24

FileOptions.DeleteOnClose将导致文件在关闭时自动删除。如果程序被异常终止,这也有效。

例如,如this answer中所述:

using (FileStream fs = new FileStream(Path.GetTempPath() + "foo.bar",
       FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None,
       4096, FileOptions.RandomAccess | FileOptions.DeleteOnClose))
{
    // temp file exists
}

// temp file is gone
于 2010-02-14T19:04:31.210 回答
14

不,您需要手动删除该文件。Path.GetTempPath() 只是为您提供临时文件夹的文件夹路径。

于 2010-02-14T18:14:01.567 回答
4

从 Windows 10 开始,答案可能是肯定的 - 取决于机器配置和托管 TEMP 文件夹的驱动器上的可用空间量。

具体来说,如果用户启用, Storage Sense可以从 TEMP 文件夹中任意删除文件(我发现很难)。据我所知,它会在磁盘空间不足时自动启用

于 2020-09-11T13:31:43.553 回答
2

基本上,如果您的应用程序不删除文件,它仍然会存在,直到您的应用程序将其删除,您应该根据该想法管理您的应用程序创建的文件。

也就是说,一旦文件关闭,您必须始终考虑到下次您想要它时它可能不存在并且您可能需要重新创建它的事实。例如,Windows 有一个“磁盘清理工具”,它可以在空间不足、用户指示或按计划运行时运行……

于 2010-02-14T19:02:45.563 回答