web-dev-qa-db-ja.com

URIパスを.NETの相対ファイルシステムパスに変換する

絶対または相対URIパスを変換する方法(例:/foo/bar.txt)(セグメントごとに)対応する相対ファイルシステムパス(例:foo\bar.txt).NETで?

私のプログラムはASP.NETアプリケーションではありません。

47
acdx

すでに試してみましたServer.MapPath
またはUri.LocalPathプロパティ?次のようなもの:

string uriString = "file://server/filename.ext";
// Lesson learnt - always check for a valid URI
if(Uri.IsWellFormedUriString(uriString))
{
    Uri uri = new Uri(uriString);
    Console.WriteLine(uri.LocalPath);
}
75
Ashish Gupta

この方法で、相対または絶対URIとベースパスから完全な絶対ファイルシステムパスを生成することができました。

と:

Uri basePathUri = new Uri(@"C:\abc\");

相対URIから:

string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;

絶対URIから:

// baseUri is a URI used to derive a relative URI
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri);
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;
11
acdx

あなたはこれを行うことができます:

var localPath = Server.MapPath("/foo/bar.txt");

詳細はMSDNを参照

5
Nick Craver