不带波浪符号(~)的GetEnvironmentVariable("TEMP")

5

我想获取临时文件夹的路径 (C:\Users\user\AppData\Local\Temp)。

GetEnvironmentVariable("TEMP") 可以正常工作,但是我得到的路径带有波浪线:

C:\Users\STANHE~1\AppData\Local\Temp\

我需要不带波浪符号的路径:

C:\Users\StanHerrmann\AppData\Local\Temp\

1
你为什么觉得需要长版本?短版本是完全有效的。 - nobody
我正在使用一个需要长版本的库。它与短版本不太兼容。 - Stampy
1个回答

5
你可以使用Path.GetFullPath来展开它:

如果你传入一个短文件名,它会被展开为一个长文件名。

但是...最好使用Path.GetTempPath,这样你就不必依赖于环境变量是否正确了。


非常感谢。我会采纳你的建议。 :) - Stampy
1
这两个建议都是正确的,即使 Path.GetTempPath 本身最终依赖于环境变量,使用它比获取 TEMP 环境变量的单个调用更安全。 - AFract
@Richard 你是对的。Path.GetTempPath 调用了 WinAPI 函数 GetTempPath,该函数最终会读取环境变量(首先是 TMP,然后是 TEMP,接着是 USERPROFILE,最后是 Windows 目录 - 现在我意识到这种行为实际上让我感到困扰)。 - Lucas Trzesniewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接