现在的位置: 首页 > 综合 > 正文

【原创源码】(05):C#-计算绝对路径。

2011年07月19日 ⁄ 综合 ⁄ 共 1586字 ⁄ 字号 评论关闭
【原创源码】(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(03);
                    intStart
++;
                }

                
else
                
{
                    isNotOver 
= false;
                }

            }


            
if (intStart > 0)
            
{
                
if (absoluteDir.EndsWith("\\"))
                
{
                    absoluteDir 
= absoluteDir.Remove(absoluteDir.Length - 1);
                }


                
for (int i = 0; i < intStart; i++)
                
{
                    absoluteDir 
= absoluteDir.Remove(absoluteDir.LastIndexOf("\\"));
                }

            }

            
return Path.Combine(absoluteDir, relativeFile);
        }

 

下面这个方法效率是楼上的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

抱歉!评论已关闭.