2010-02-14 102 views
17

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

+0

检查这在TEMP文件夹的限制:http://stackoverflow.com/questions/1683831/limitations-of-temp-directory-in-窗户/ 1683914#1683914 – 2010-02-14 19:07:20

回答

13

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

2

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

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

23

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