一段时间以来,我一直在寻找适用于 URL 的 Path.Combine 方法。这类似于 URL 的 Path.Combine 吗?有一个很大的不同。
我将举例说明。假设我们有一个基本 url:http://example.com/somefolder
和一个 file: foo.txt
。因此,完整路径将是:http://example.com/somefolder/foo.txt
. 听起来很简单,对吧?哈。
我尝试了 Uri 类:Uri.TryCreate(new Uri("http://example.com/somefolder"), "foo.txt", out x);
导致"http://example.com/foo.txt"
.
然后我尝试了 Path:System.IO.Path.Combine("http://example.com/somefolder", "foo.txt");
导致"http://example.com/somefolder\foo.txt"
... Closer,但仍然没有。
为了踢球,我然后尝试:System.IO.Path.Combine("http://example.com/somefolder/", "foo.txt")
导致"http://example.com/somefolder/foo.txt"
.
最后一个工作,但它基本上是在那个时候进行字符串连接。
所以我想我有两个选择:
- 使用 Path.Combine 并将所有 \ 替换为 /
- 使用基本字符串连接
我是否缺少为此的内置框架方法?
更新:我的用例是下载一堆文件。我的代码如下所示:
public void Download()
{
var folder = "http://example.com/somefolder";
var filenames = getFileNames(folder);
foreach (var name in filenames)
{
downloadFile(new Uri(folder + "/" + name));
}
}
我对必须在 Uri 构造函数中使用字符串 concat 以及必须检查是否需要斜杠(我在代码中省略)感到恼火。
在我看来,我正在尝试做的事情会出现很多,因为 Uri 类处理除了 http 之外的许多其他协议。