绝对路径转换为相对路径
来源:互联网 发布:工作流 源码 编辑:程序博客网 时间:2024/06/06 03:51
最近写了个工作上要用到的工具,要和同事共用,需要储存各种文件路径,为了保证我们的文件结构相同,且减少文件错乱的问题,在储存文件路径的时候决定用相对路径来实现,就像VS里生成路径一样,随便把项目考到哪个地方都能保持正常运行。
但是网上一搜,悲催了,找了半天没有好到这方面的参考代码或思路什么的,所以自己想了一个傻瓜办法。
算法思路就是:举个列子,比如有参考路径:F:\\A\B\C\D\E
需要转换为相对路径的源路径:F:\\A\B\C-1\C-2\C-3\C-4
先找到两个路径共同的父路径strParent = F:\\A\B,然后把参考路径除了父路径外路径C\D\E转换为相对路径strRelative = ..\..\..\
然后把源路径的strParent替换为strRelative就可以了,很简单吧
下面是源码
/// <summary> /// 绝对路径转换为相对路径 /// </summary> /// <param name="strReferencePath">参考路径</param> /// <param name="strSourcePath">需要转换的路径</param> /// <returns>返回转换后的路径</returns> private string ChangeToRelativePath(string strReferencePath, string strSourcePath) { string strReferencePathRoot = Path.GetPathRoot(strReferencePath); string strSourcePathRoot = Path.GetPathRoot(strSourcePath); //不同盘符则不转换 if (strReferencePathRoot != strSourcePathRoot) return strSourcePath; //先清除末尾的‘\\’ strReferencePath = strReferencePath.TrimEnd('\\'); strSourcePath = strSourcePath.TrimEnd('\\'); string[] arrLocationDirSegment = strReferencePath.Split('\\'); string[] arrSourceDirSegment = strSourcePath.Split('\\'); if (arrLocationDirSegment.Length == 0 || arrSourceDirSegment.Length == 0) return strSourcePath; //参考路径和要转换的路径共同的父路径 string strSamePath = strReferencePathRoot; //参考到父路径的相对路径 string strLocationRelativePath = string.Empty; //以参考路径分段长度作为循环 for (int i = 1; i < arrLocationDirSegment.Length; i++) { if (i < arrSourceDirSegment.Length) { if (arrLocationDirSegment[i] == arrSourceDirSegment[i]) //若相同则为父路径 strSamePath += arrLocationDirSegment[i] + "\\"; else //若不同则为当前程序自己的路径,此路径就需要转换为相对路径 strLocationRelativePath += "..\\"; } else//若需要转换的路径长度小于当前程序路径,此路径就需要转换为相对路径 strLocationRelativePath += "..\\"; } return strSourcePath.Replace(strSamePath, strLocationRelativePath); }小弟第一次写博客,有点小兴奋呢,如果大家有更好的想法可以提出来,大家互相交流学习
0 0
- 相对路径转换为绝对路径
- 绝对路径转换为相对路径
- Asp相对路径转换为绝对路径函数
- java相对路径转换为绝对路径
- C# 将绝对路径转换为相对路径
- C# url 路径转换 相对路径 转换为 绝对路径
- 批量替换页面中的路径 相对路径转换为绝对路径
- ASP.net 1.1 中相对路径转换为绝对路径
- 使用 JavaScript 将相对路径转换为绝对路径
- PHP将相对路径URL转换为绝对路径URL
- 写一个函数,转换相对路径为绝对路径
- 学习 shell —— 相对路径转换为绝对路径
- 终端中传入的相对路径转换为绝对路径
- windows相对路径转换绝对路径
- 相对路径 与 绝对路径之间的转换
- 绝对路径与相对路径的相互转换
- Delphi 相对路径和绝对路径的转换
- win32相对路径到绝对路径的转换
- SQL/PLSQL---110个常用函数,一定能找到你要找的
- Cocos2d-x 3.x中43种常用动作汇总
- loudrunner无法录制脚本常见几种问题。
- 一条UPDATE从生到死的整个过程的深入解析(oracle体系看完后看这个)
- IOS_隐藏系统状态栏
- 绝对路径转换为相对路径
- Spring 定时任务时间调度相关设置
- 架构师的大局观
- Dynamics CRM2013 sub grid中数据翻页问题
- 12 大编程语言收入排行榜,Ruby 最高!
- 淘米 笔试面试 2014.11.22
- C++ 继承内存模型
- 原生开发安卓/iOS,Visual Studio迎神器扩展
- RHEL6.1编译内核-kernel-3.0.4