しばらくの間、URL で機能する Path.Combine メソッドを探していました。これはURL の Path.Combine に似ていますか? 1つの大きな違いがあります。
例を挙げて説明します。ベース url:http://example.com/somefolder
と file: があるとしますfoo.txt
。したがって、フル パスは次のようになりますhttp://example.com/somefolder/foo.txt
。シンプルですね。ハ。
私は Uri class: を試しました。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"
.
最後のものは機能しましたが、基本的にその時点で文字列の連結を行っています。
したがって、次の 2 つのオプションがあると思います。
- 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 以外の多くのプロトコルを処理するため、私がやろうとしていることがたくさん出てくるように思えます。