手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#绝对路径拼接相对路径的实例代码
C#绝对路径拼接相对路径的实例代码
摘要:做项目时发现Path.Combine方法只能支持傻瓜式的目录拼接复制代码代码如下://绝对路径stringabsolutePath=@"C:...

做项目时发现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)));

输出结果为:

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

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

//绝对路径

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<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();

输出结果:

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

【C#绝对路径拼接相对路径的实例代码】相关文章:

C# 邮件发送和接收实现代码

C# 禁止应用程序多次启动的实例

c#获取本机的IP地址的代码

C#加密解密文件小工具实现代码

C#跨窗体操作(引用传递) 实例代码

c#(Socket)同步套接字代码示例

C#使用itextsharp生成PDF文件的实现代码

C#反射在实际应用中的实例代码

C#程序最小化到托盘图标操作步骤与实现代码

Treeview动态添加用户控件传值和取值的实例代码

精品推荐
分类导航