C#绝对路径拼接相对路径的实例代码

 更新时间:2020年6月25日 11:42  点击:1641

做项目时发现Path.Combine方法只能支持傻瓜式的目录拼接

复制代码 代码如下:

//绝对路径
string absolutePath = @"C:\Program Files\Internet Explorer";
//相对路径
string relativePath = @"..\TestPath\";
//预计拼接结果
string splicingResult = string.Empty;
Console.WriteLine(string.Format("Path.Combine(\"{0}\",\"{1}\")=\"{2}\"", absolutePath, relativePath, Path.Combine(absolutePath, relativePath)));

输出结果为:

发现并没有按照想像的分辨出相对路径和绝对路径,所以只好用正则匹配了相对路径进行重新拼接,以下方法只支持绝对路径+相对路径的方式

//绝对路径
string absolutePath = @"C:\Program Files\Internet Explorer";
//相对路径
string relativePath = @"..\TestPath\";
//预计拼接结果
string splicingResult = string.Empty;
Console.WriteLine(string.Format("Path.Combine(\"{0}\",\"{1}\")=\"{2}\"", absolutePath, relativePath, Path.Combine(absolutePath, relativePath)));
if (!Path.IsPathRooted(relativePath))
{
    //匹配相对路径,匹配需要向上推的目录层数
    Regex regex = new Regex(@"^\\|([..]+)");
    int backUp = regex.Matches(relativePath).Count;
    List<string> pathes = absolutePath.Split("\\".ToCharArray()).ToList();
    pathes.RemoveRange(pathes.Count - backUp, backUp);
    //匹配文件名,匹配需要附加的目录层数
    regex = new Regex(@"^\\|([a-zA-Z0-9]+)");
    MatchCollection matches = regex.Matches(relativePath);
    foreach (Match match in matches)
    {
        pathes.Add(match.Value);
    }
    //驱动器地址取绝对路径中的驱动器地址
    pathes[0] = Path.GetPathRoot(absolutePath);
    foreach (string p in pathes)
    {
        splicingResult = Path.Combine(splicingResult, p);
    }
}
Console.WriteLine(string.Format("Absolute Path={0}",absolutePath));
Console.WriteLine(string.Format("Relative Path={0}", relativePath));
Console.WriteLine(string.Format("Path.Combine(\"{0}\",\"{1}\")=\"{2}\"", absolutePath, relativePath, splicingResult));
Console.ReadLine();

输出结果:

[!--infotagslink--]

相关文章

  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • 相对路径和绝对路径的写法总结

    本文主要对相对路径和绝对路径的写法进行总结。具有一定的参考价值,下面跟着小编一起来看下吧...2020-06-25
  • ASP.NET中相对路径的使用总结

    在.cs页面中输入Response.Write(Request.MapPath(1.jpg))这可以输出图片的物理路径也就是这张图片在服务器上存放的具体路径,下面为大家讲解下相对路径的应用...2021-09-22
  • php中相对路径及绝对路径的使用

    相对路径及绝对路径在php中我们常用到了对于相对路径及绝对路径具体什么时候使用有什么区别我们在这里来看一篇教程。 前言 最近老是看到有人踩在路径的坑上面了,...2016-11-25
  • Url相对路径的问题总结

    很多时候,我们在图片或者其他(a标签,flash)中指定链接的时候,我们需要选择是使用绝对路径,或者是相对路径....2020-06-25
  • php把相对路径转换成绝对路径方法

    我们经常会碰到采集内容时,要补全地址是吧,下面我们来看看这款php把相对路径转换成绝对路径方法吧。 相对路径转化成绝对路径 代码如下 复制代码 ...2016-11-25
  • JS获取当前脚本文件的绝对路径

    这篇文章主要介绍了JS获取当前脚本文件的绝对路径的相关资料,感兴趣的小伙伴们可以参考一下...2016-03-03
  • php 获取相对路径实例代码

    代码如下 复制代码 function getRelativePath($a, $b) { ...2016-11-25
  • html中base标签解决相对路径问题

    网站是由两套独立的系统组合而来,一套门户,一套自定义开发,分别位于不同的服务器。 域名只能有一个,于是使用nginx做了代理,根据location做了转发,比如/portal就转发到门户...2016-09-20
  • IIS下PHP is_dir()/mkdir() 绝对路径目录BUg

    在iis+php环境中is_dir()与mkdir()的用法在与apache中用法是一样的,但是反应的路径会有所区别,下面我简单介绍一下。 is_dir('/abc');正常情况下应该是判断web应用...2016-11-25
  • PHP转换相对路径,并创建目录

    <?php /* * 作用:主用于文件上传后的目录自动生成 * 时间:2006-3-12 * 作者:欣然随风 */ class class_dir { /** * 换算实际路径 */ funct...2016-11-25
  • Global.asax取绝对路径的方法

    通过string absolutelyPath可设置对路径,具体代码如下,感兴趣的朋友可以参考下哈,希望对你有所帮助...2021-09-22
  • Global.asax取物理路径/取绝对路径具体方法

    本文章来给大家简单介绍利用Global.asax取物理路径和取绝对路径代码,有需要了解的朋友可参考参考...2021-09-22
  • php 获得当前的脚本网址和相对路径转化成绝对路径正则

    <? function relative_to_absolute($content, $feed_url) { preg_match('/(http|https教程|ftp):///', $feed_url, $protocol); $server_url = preg_replace(...2016-11-25
  • C#绝对路径拼接相对路径的实例代码

    C#绝对路径拼接相对路径的实例代码,需要的朋友可以参考一下...2020-06-25
  • gradle项目中资源文件的相对路径打包技巧必看

    这篇文章主要介绍了gradle项目中资源文件的相对路径打包技巧必看篇,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-22
  • asp.net获取网站绝对路径示例

    在编写 ASP.NET 应用程序的时候,有时为了更好地进行控制静态文件的路径,如在模板页或者用户控件中设置js或者css文件的路径等,采用绝对路径是难免的。下面就是几种获取绝对路径的几种方法...2021-09-22
  • HTML相对路径和绝对路径区别

    本文章来为各位简单的介绍一篇关于HTML相对路径和绝对路径区别的基本知识了,希望这篇文章能够为各位同学带来帮助哦。 初拟这个题目的时候,感觉太过简单,没有什么值...2016-09-20
  • PHP __FILE__获取文件绝对路径用法

    PHP 常量 dirname(__file__) __FILE__ :被称为PHP魔术常量 ,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径 1)dirname(__FILE__) 函数返回的是脚本所在在的...2016-11-25
  • linux C++ 获取文件绝对路径的实例代码

    下面小编就为大家带来一篇linux C++ 获取文件绝对路径的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25