.NET Core中如何展开带有波浪号(~)的路径

6

如果我使用磁盘(而不是URL)路径和~,例如~/mike/foo,则运行时会将其附加到当前工作目录而不是展开它。

这些方式都不起作用:

  • Path.GetFullPath
  • Path.Combine

是否有内置的.NET Core函数可以安全地在跨平台上扩展此类路径?


在什么情况下?您想要创建链接的相对URL吗?还是您想要定位wwwroot文件夹中的路径? - Jeremy Lakeman
@JeremyLakeman 我应该更清楚 - 我指的是磁盘路径。 - lonix
1个回答

5

我的跨平台解决方案:

myPath = myPath
  .Replace("~", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile))
  .Replace("//", "/");

但是通常总会有一些边缘情况(尤其是跨平台的情况)。因此,如果存在内置的.NET Core函数,则最好使用该函数。

(请添加您的答案,我会接受它。)


1
一个边缘情况是,在bash中/~不能作为有效路径工作,但是使用上面的代码扩展版本会扩展为//home/user - John Smith

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