【问题标题】:C# Path.Combine for virtual paths?C# Path.Combine 用于虚拟路径?
【发布时间】:2019-12-02 20:12:47
【问题描述】:

我有一个 .NET MVC 应用程序,我在其中使用以下内容构建虚拟路径:

Path.Combine("~/Documents/", "application", "username");

由此产生的输出是"~/Documents/application\\username"。这在传递给 Telerik RadFileExplorer 时会导致错误,但是如果我手动将路径构建为 "~/Documents/application/username" 它工作正常。上面的示例使用字符串,但实际代码使用变量。

如果可能的话,我宁愿不使用 String.Replace... 是否有替代 Path.Combine 的方法可以产生此输出? "~/Documents/application/username"

【问题讨论】:

    标签: c# .net path telerik


    【解决方案1】:

    Path.Combine 为你添加了/,所以合并路径时不需要添加。

    试试这样:Path.Combine("~/Documents", "application", "username");

    【讨论】:

    【解决方案2】:

    有很多组合路径(基本上是字符串)的替代方法。 您可以使用 $ - 字符串插值并像这样放置参数: $"~/{Documents}/{application}/{username}" 这比替换更具可读性。

    【讨论】:

    【解决方案3】:

    编辑:刚刚看到 Raziel 的答案,这可能更好/更简单.. Livio 的评论通常是不正确的。只有在基于 Unix 的系统上运行时才会如此。如果在 Windows 系统上运行 Path.Combine 默认为反斜杠,除非另有说明。

    Path.Combine 的文档来看,如果它明确包含在路径组件中,它只会使用正斜杠。我建议为后两个参数编写一个函数,该函数只在末尾附加一个正斜杠(并且可能还确保开头没有斜杠,因为这会导致它们被解释为绝对路径并覆盖之前的所有内容) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      相关资源
      最近更新 更多