yoshikazuendo
11/18/2013 - 5:23 AM

相対パスを絶対パスに変換する。(System.Uri, Path.GetFullPath) カレントディレクトリを基準にする方法と、基準となるディレクトリを指定する方法がある。

相対パスを絶対パスに変換する。(System.Uri, Path.GetFullPath) カレントディレクトリを基準にする方法と、基準となるディレクトリを指定する方法がある。

// 基準となるあるディレクトリを元に、相対パスから絶対パスを取得する。
var baseUri1 = new Uri(@"C:\dev");
var baseUri2 = new Uri(@"C:\dev\");

// ただのファイル名だと、基準となるディレクトリ末尾のパスセパレータが影響する。
var fullPath1 = new Uri(baseUri1, @"test.txt").LocalPath; // "C:\test.txt";
var fullPath2 = new Uri(baseUri2, @"test.txt").LocalPath; // "C:\dev\test.txt";

// 仮想パスだと、基準となるディレクトリ末尾のパスセパレータは影響しない。
var fullPath3 = new Uri(baseUri1, @"..\test.txt").LocalPath; // "C:\test.txt";
var fullPath4 = new Uri(baseUri2, @"..\test.txt").LocalPath; // "C:\test.txt";
// カレントディレクトリを基準にして相対パスを絶対パスに変換する。 
string fileName = "Text.txt"
string fullPath = System.IO.Path.GetFullPath(fileName); // "C:\users\username\documents\Text.txt" 

// 絶対パスかどうか? 
var isRootPath = Path.IsPathRooted(fullPath); // true