【原创源码】(05):C#-计算绝对路径。
【原创源码】(05):C#-计算绝对路径。
欢迎大家发表意见(漏洞,性能等)。在博客园社区以外转载,请注明作者和出处。谢谢!
/// <summary>
/// 计算绝对路径
/// </summary>
/// <param name="absoluteDir">绝对目录</param>
/// <param name="relativeFile">相对文件</param>
/// <returns></returns>
/// <example>
/// @"D:\Windows\regedit.exe" = GetAbsolutePath(@"D:\Windows\Web\Wallpaper\", @"..\..\regedit.exe" );
/// </example>
public static string GetAbsolutePath(string absoluteDir, string relativeFile)
{
bool isNotOver = true;
int intStart = 0;
while (isNotOver)
{
if (relativeFile.StartsWith(@"..\"))
{
relativeFile = relativeFile.Remove(0, 3);
intStart++;
}
else
{
isNotOver = false;
}
}
![](/Images/OutliningIndicators/InBlock.gif)
if (intStart > 0)
{
if (absoluteDir.EndsWith("\\"))
{
absoluteDir = absoluteDir.Remove(absoluteDir.Length - 1);
}
![](/Images/OutliningIndicators/InBlock.gif)
for (int i = 0; i < intStart; i++)
{
absoluteDir = absoluteDir.Remove(absoluteDir.LastIndexOf("\\"));
}
}
return Path.Combine(absoluteDir, relativeFile);
}
下面这个方法效率是楼上的1/50。。。![](/WebResource.axd?d=pLXXeGbWF7eXU8SMs2-GFZvUWY2JNH05dFx5YzJhGUYAYJAFEaTEq36NAhTPy7_KekvzDFwt8wvQWdByvJIGWdEq6x2KpKD80&t=633043282340000000)
public static string GetAbsolutePath(string dir, string path)
{
string strDir = Directory.GetCurrentDirectory();
Directory.SetCurrentDirectory(dir);
string strNew = Path.GetFullPath(path);
Directory.SetCurrentDirectory(strDir);
return strNew;
}
欢迎大家发表意见(漏洞,性能等)。在博客园社区以外转载,请注明作者和出处。谢谢!
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
下面这个方法效率是楼上的1/50。。。
public static string GetAbsolutePath(string dir, string path)
{
string strDir = Directory.GetCurrentDirectory();
Directory.SetCurrentDirectory(dir);
string strNew = Path.GetFullPath(path);
Directory.SetCurrentDirectory(strDir);
return strNew;
}
![80720.jpg](/images/cnblogs_com/clarkchan/8720/80720.jpg)
posted on 2008-07-20 17:23 Clark Chan 阅读(1047) 评论(1) 编辑 收藏 举报