Od jakiegoś czasu szukam metody Path.Combine, która działa na adresy URL. Jest to podobne do Path.Combine for URLs? z jedną dużą różnicą.Path.Combine for URLs (part 2)
Zilustruję przykładem. Załóżmy, że mamy adres bazowy: http://example.com/somefolder
i plik: foo.txt
. Tak więc pełną ścieżką będzie: http://example.com/somefolder/foo.txt
. Brzmi prosto, prawda? Ha.
Próbowałem klasy Uri: Uri.TryCreate(new Uri("http://example.com/somefolder"), "foo.txt", out x);
, co dało w wyniku "http://example.com/foo.txt"
.
Potem próbowałem Ścieżka: System.IO.Path.Combine("http://example.com/somefolder", "foo.txt");
, która zakończyła się "http://example.com/somefolder\foo.txt"
... Bliżej, ale nadal nie.
Za kopnięcia próbowałem następnie: System.IO.Path.Combine("http://example.com/somefolder/", "foo.txt")
, co dało w wyniku "http://example.com/somefolder/foo.txt"
.
Ten ostatni zadziałał, ale w zasadzie to robi ciągłe łączenie w tym punkcie.
Więc myślę, że mam dwie opcje:
- Zastosowanie Path.Combine i zastąpić wszystkie \ z/
- używać podstawowych połączonego łańcucha znaków
jestem brakuje wbudowany w metodzie ramowej dla to?
AKTUALIZACJA: Przypadek użycia, który mam, służy do pobierania wielu plików. Mój kod wygląda następująco:
public void Download()
{
var folder = "http://example.com/somefolder";
var filenames = getFileNames(folder);
foreach (var name in filenames)
{
downloadFile(new Uri(folder + "/" + name));
}
}
jestem dotknięty przy konieczności korzystania ciąg concat w konstruktora Uri, jak również konieczności sprawdzenia, czy potrzebne jest ukośnik (które pominąłem w kodzie).
Wydaje mi się, że to, co próbuję zrobić, bardzo by się pojawiło, ponieważ klasa Uri obsługuje wiele innych protokołów poza http.
Rzeczywiście, zsynchronizowałem pobieranie z ForEach. Po prostu to wyciąłem, ponieważ nie miało to znaczenia dla pytania. Interesujący link. Sprawdzę to i ewentualnie zmienię akceptowaną odpowiedź. – Xcelled194
Na jakiej licencji jest podany kod? czy mogę go użyć na moim zastrzeżonym kodzie? – Jack
Absolutnie. [Licencja MIT] (http://choosealicense.com/licenses/mit/), więc jest tak liberalna, jak to tylko możliwe. Nie możesz mnie pozwać. :) –