một này làm việc cho đường dẫn vào ổ đĩa khác nhau, các đường dẫn ổ đĩa tương đối và cho đường dẫn tương đối thực tế. Heck, nó thậm chí hoạt động nếu basePath
không thực sự tuyệt đối; nó luôn luôn sử dụng thư mục làm việc hiện tại như là dự phòng cuối cùng.
public static String GetAbsolutePath(String relativePath, String basePath)
{
if (relativePath == null)
return null;
if (basePath == null)
basePath = Path.GetFullPath("."); // quick way of getting current working directory
else
basePath = GetAbsolutePath(basePath, null); // to be REALLY sure ;)
String path;
// specific for windows paths starting on \ - they need the drive added to them.
// I constructed this piece like this for possible Mono support.
if (!Path.IsPathRooted(relativePath) || "\\".Equals(Path.GetPathRoot(relativePath)))
{
if (relativePath.StartsWith(Path.DirectorySeparatorChar.ToString()))
path = Path.Combine(Path.GetPathRoot(basePath), relativePath.TrimStart(Path.DirectorySeparatorChar));
else
path = Path.Combine(basePath, relativePath);
}
else
path = relativePath;
// resolves any internal "..\" to get the true full path.
return Path.GetFullPath(path);
}
Bạn có nghĩa là đường dẫn tương đối đến thư mục hiện tại, nói cách khác là thư mục làm việc hoặc liên quan đến vị trí của .exe? –
Có hai loại đường dẫn tương đối. Một nếu có dạng "A \ B \ C" và không ngụ ý một cơ sở cụ thể. Cái còn lại có dạng ". \ A \ B" hoặc ".. \ A \ B"; chúng tương đối so với thư mục làm việc hiện tại. – MSalters
@Amit Dhall: Bằng cách này, nó là điều tốt để chấp nhận và upvote câu trả lời (s) giúp bạn. –