На какое-то время я искал метод Path.Combine, который работает с URL-адресами. Это похоже на Path.Combine для URL-адресов? с одной большой разницей.
Я проиллюстрирую пример. Скажем, у нас есть базовый url: http://example.com/somefolder
и файл: 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"
... Ближе, но все же нет.
Для ударов я тогда попытался: System.IO.Path.Combine("http://example.com/somefolder/", "foo.txt")
, в результате чего "http://example.com/somefolder/foo.txt"
.
Последняя работала, но в основном выполняла конкатенацию строк в этой точке.
Итак, у меня есть два варианта:
- Использовать Path.Combine и заменить все \with/
- Использование основной конкатенации строк
Мне не хватает встроенного метода framework для этого?
ОБНОВЛЕНИЕ:. Я использую для загрузки кучу файлов. Мой код выглядит следующим образом:
public void Download()
{
var folder = "http://example.com/somefolder";
var filenames = getFileNames(folder);
foreach (var name in filenames)
{
downloadFile(new Uri(folder + "/" + name));
}
}
Мне посчастливилось использовать string concat в конструкторе Uri, а также проверить, нужна ли косая черта (которую я пропустил в коде).
Мне кажется, что то, что я пытаюсь сделать, будет очень много, так как класс Uri обрабатывает множество других протоколов, кроме http.