Ron*_*rby 22 .net temporary-files
我一直认为答案是肯定的,但现在我正试图找到真相.
当我使用创建临时文件时Path.GetTempFileName()
,Windows会自动清除它吗?
如果我在下面创建一个目录Path.GetTempPath()
呢?窗户会清理它吗?
或者开发人员有责任删除在那里创建的文件吗?
Dav*_*nan 11
不会自动删除它们.要创建一个在关闭时自动删除的文件,请传递FILE_FLAG_DELETE_ON_CLOSE
给CreateFile
.
在关闭所有句柄后立即删除该文件,其中包括指定的句柄和任何其他打开或重复的句柄.如果文件存在打开的句柄,则调用将失败,除非它们都是使用FILE_SHARE_DELETE共享模式打开的.除非指定了FILE_SHARE_DELETE共享模式,否则对文件的后续打开请求将失败.
要从.net访问此Win32功能,请使用SafeFileHandle
该类.
不,不会的。这就是为什么http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx特别指出
“如果没有唯一的临时文件名可用,则 GetTempFileName 方法将引发 IOException。要解决此错误,请删除所有不需要的临时文件。”
小智 6
对于我的 Windows 窗体和 WPF 应用程序,我添加了一个事件以在应用程序关闭时删除文件。像这样:
private string GetTempFile() {
string tmpfile = Path.GetTempFileName();
this.Closed += (object sender, EventArgs e) => {
if (File.Exists(tmpfile))
File.Delete(tmpfile);
};
return tmpfile;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11000 次 |
最近记录: |