絶対または相対URIパスを変換する方法(例:/foo/bar.txt
)(セグメントごとに)対応する相対ファイルシステムパス(例:foo\bar.txt
).NETで?
私のプログラムはASP.NETアプリケーションではありません。
すでに試してみました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);
}
この方法で、相対または絶対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;