当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-17

    本文导语:  做项目时发现Path.Combine方法只能支持傻瓜式的目录拼接 代码如下://绝对路径string absolutePath = @"C:Program FilesInternet Explorer";//相对路径string relativePath = @"..TestPath";//预计拼接结果string splicingResult = string.Empty;Console.WriteLine(string.Format(...

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

代码如下:

//绝对路径
string absolutePath = @"C:Program FilesInternet 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 FilesInternet 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 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();

输出结果:


    
 
 

您可能感兴趣的文章:

  • C# 相对路径与系统路径
  • C# WinForm编程获取文件物理路径的方法
  • C# 读取配置文件(指定路径)的方法
  • C# 读取指定路径配置文件的方法
  • C#获取路径的多种方法
  • C# 获取系统特殊文件夹路径的方法
  • 使用C#获取系统特殊文件夹路径的解决方法
  • C# 获取路径中,文件名、目录、扩展名的代码
  • C#获取当前程序运行路径的方法汇总
  • C# Winform中获取文件路径的方法
  • C#缩略图多路径多格式保存的实例
  • c#获取当前程序路径及其它相关信息的方法
  • c#文件名/路径处理方法示例
  • C#文件路径操作详细总结
  • c# 获取路径的方法详解
  • C#实现上传照片到物理路径,并且将地址保存到数据库的小例子
  • C#正则表达式匹配HTML中的图片路径,图片地址代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 网站图片路径的问题:绝对路径/虚拟路径
  • 相对路径 绝对路径
  • *****如何更改带有子路径和子文件的路径名????**
  • unix主机下tar路径,不tar路径下文件
  • 如何把当前路径加入查找路径中?立即给分!
  • 如何用JAVA获得当前执行文件所在的目录路径,和系统目录路径(c:winnt)
  • cpio压缩文件绝对路径怎么解到指定路径
  • 请问: 想让一个执行文件 不写相对路径,在任何路径下,都能执行,该怎么做啊?
  • 如何把 -I 选项里面的路径加入到系统路径?
  • linux下面怎么设置公共路径阿。想让每个人登陆后都可以使用这个路径里面的命令
  • 请教一个相对路径和绝对路径的问题
  • 怎么把root的路径考到某用户路径去。
  • 只知mount路径,怎样显示出实际路径
  • 没有路径的情况下创建的文件的默认路径是和程序生成可执行文件在同一个目录中是吗?。
  • 列出该shell的搜索路径。如果搜索路径中不包括当前目录和
  • 如何得到jsp所在的物理路径和web虚拟路径?
  • 请问在jsp中如何实现相对路径?我在jsp文件中指定相对路径的文件,可是程序找不到!
  • 在TOMCAT中,怎样设虚拟路径为默认的路径啊!!
  • 【伸手党】请教如何删除当前路径下的所有软链接文件!不用递归。当前路径。
  • 在Bean中如何表示路径,我想读服务器的web目录下的一个文件,该如何写?(虚路径)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3