zoukankan      html  css  js  c++  java
  • C#相对路径转绝对路径,绝对路径转相对路径

     

    1.绝对路径转相对路径

    绝对转相对似乎C#没有提供实现,需要自己写,这里摘选了一位博友的实现方法:

    string RelativePath(string absolutePath, string relativeTo)
            {
                //from - www.cnphp6.com
    
                string[] absoluteDirectories = absolutePath.Split('\');
                string[] relativeDirectories = relativeTo.Split('\');
    
                //Get the shortest of the two paths
                int length = absoluteDirectories.Length < relativeDirectories.Length ? absoluteDirectories.Length : relativeDirectories.Length;
    
                //Use to determine where in the loop we exited
                int lastCommonRoot = -1;
                int index;
    
                //Find common root
                for (index = 0; index < length; index++)
                    if (absoluteDirectories[index] == relativeDirectories[index])
                        lastCommonRoot = index;
                    else
                        break;
    
                //If we didn't find a common prefix then throw
                if (lastCommonRoot == -1)
                    throw new ArgumentException("Paths do not have a common base");
    
                //Build up the relative path
                StringBuilder relativePath = new StringBuilder();
    
                //Add on the ..
                for (index = lastCommonRoot + 1; index < absoluteDirectories.Length; index++)
                    if (absoluteDirectories[index].Length > 0)
                        relativePath.Append("..\");
    
                //Add on the folders
                for (index = lastCommonRoot + 1; index < relativeDirectories.Length - 1; index++)
                    relativePath.Append(relativeDirectories[index] + "\");
                relativePath.Append(relativeDirectories[relativeDirectories.Length - 1]);
    
                return relativePath.ToString();
            }
    RelativePath

    调用:

    static void Main(string[] args)
    {
        var path = RelativePath(@"D:MyProjRelease", @"D:MyProjLogMyFile.txt");
    
        Console.WriteLine(path);//print ..LogMyFile.txt
        Console.Read();
    }

    2.相对路径转绝对路径

    可以直接用.Net自己的Path.GetFullPath转换。用SetCurrentDirectory改变当前比较路径

    static void Main(string[] args)
    {
        var relativePath = @"....Release";
        //Directory.SetCurrentDirectory(...)
        Console.WriteLine(Path.GetFullPath(relativePath));
        Console.Read();
    }
  • 相关阅读:
    Bootstrap 、AngularJs
    spring boot 随手记
    STOMP
    socket、web socket
    spring boot (2):spring boot 打包tomcat、tomcat 部署多个项目、服务器部署项目SSL 设置(阿里云)
    spring boot (1):初尝
    SOA、SOAP、RFC、RPC、IETF
    Django中级篇(上)
    面向对象进阶篇
    面向对象基础 反射
  • 原文地址:https://www.cnblogs.com/hont/p/5412340.html
Copyright © 2011-2022 走看看