临时文件夹中的文件是否会自动删除?

时间:2010-02-14 18:12:54

标签: c# windows io temporary-files

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:13)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

具体来说,Storage Sense可以在用户启用的情况下从TEMP文件夹中任意删除文件(我发现这很困难)。据我所知,它将self-enable占用较少的磁盘空间。