有时候在编程当中我们需要获取临时目录的路径。临时目录在DOS/Win9x时代一直是C:\Temp之类形式,以环境变量来指定;到了多用户的WinXP,虽然默认路径变成了C:\Documents and Settings\Username\Local Settings\Temp,但是仍然可以通过TMP或者TEMP环境变量来指定。因此我们首先可以通过直接读取环境变量的方式找到临时目录:

Environment.GetEnvironmentVariable("TMP");

或者,

Environment.GetEnvironmentVariable("TEMP");

这时就有一个问题随之而来,万一TMP和TEMP两个环境变量的值不同时,应该以哪个为准呢?此外,万一两个变量都不存在时,应该以哪个目录为临时目录呢? 看来,这个方法不够“标准”。

实际上,Win32中关于文件系统的API里,已经为我们提供了这样一个API:

DWORD GetTempPath(
  DWORD nBufferLength,
  LPTSTR lpBuffer
);

GetTempPath函数会按照如下的顺序确定临时目录:

1. The path specified by the TMP environment variable.
2. The path specified by the TEMP environment variable.
3. The path specified by the USERPROFILE environment variable.
4. The Windows directory.

而在.Net里面,对于这个API已经有了封装,这就是Path.GetTempPath()方法。因此在.Net当中获取临时目录时,只需用如下语句:

string tempFolder = Path.GetTempPath();