在C#中合并和解析相对路径方式

 更新时间:2025年01月07日 10:49:16   作者:坐井观老天  
Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素的路径;GetFullPath方法可以解析包含相对元素的路径并返回绝对路径

C#合并和解析相对路径

对于 C# 程序来说,组合相对路径通常很有用。

例如:

当您在 Visual Studio 中构建程序时,可执行程序将在源代码目录下的 bin\Debug 子目录中运行。

如果您想要操作与项目源代码位于同一目录中的文件,则需要从可执行程序的位置向上移动两级目录树。

System.IO.Path类

提供了几个用于操作文件路径的静态方法。Combine方法将两个路径合并在一起。

不幸的是,该方法只是连接路径。

例如:

C:\Data\Test加上..\data.txt得到C:\Data\Test\..\data.txt,这可能不是您想要的。

路径的..部分移动到父目录,因此您可能想要的是此示例中的C:\Data\data.txt。

幸运的是

Path类的GetFullPath方法可以解析包含相对元素(例如此元素)的路径并返回绝对路径。

以下代码显示程序如何组合您输入的两条路径。

txtResult.Text = Path.GetFullPath( Path.Combine(txtPath1.Text, txtPath2.Text));

您可以使用类似的技术在程序中组合路径。

例如:

在 Visual Studio 中运行的程序可以使用以下代码来查找其源代码目录的路径。

Console.WriteLine(Path.GetFullPath( Path.Combine(Application.StartupPath, "..\\..")));

请注意:

  • GetFullPath方法使用 \ 和 / 字符作为目录分隔符
  • 因此以下代码也有效
Console.WriteLine(Path.GetFullPath( Path.Combine(Application.StartupPath, "../..")));

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C#使用handle实现获取占用指定文件或文件夹的进程

    C#使用handle实现获取占用指定文件或文件夹的进程

    很多时候,一些不知道啥进程,把你的文件给占用了,然后就没办法删掉或者做其他操作,如果使用Locksmith功能,就可以实现快速锁定是哪个进程在搞事情,把对应进程干掉就可以了,下面内容演示C#使用几行代码实现File Locksmith功能,需要的朋友可以参考下
    2024-09-09
  • DirectInfo.GetFiles返回数组的默认排序示例

    DirectInfo.GetFiles返回数组的默认排序示例

    这篇文章主要介绍了,DirectInfo.GetFiles返回数组的默认排序示例NTFS和CDFS下,是按照字母顺序,而FAT下,按照文件创建时间顺序
    2014-01-01
  • C#基础知识之GetType与typeof的区别小结

    C#基础知识之GetType与typeof的区别小结

    在比较对象时,需要了解他们的类型,才能决定他们的值是否能比较。所有的类都从System.Object中继承了GetType()方法,常常与typeo()运算符一起使用。这篇文章主要给大家介绍了关于C#基础知识之GetType与typeof区别的相关资料,需要的朋友可以参考下
    2021-06-06
  • C#之List移除某个属性值中最大的值方式

    C#之List移除某个属性值中最大的值方式

    这段个方法教你如何在C#中移除ListListList中属性值最大的大的元素,涵盖.NET6的MaxBy、MaxFirst/与RemoveAll等种实现方式,助你高效管理列表数据
    2026-06-06
  • WPF自定义控件和样式之自定义按钮(Button)

    WPF自定义控件和样式之自定义按钮(Button)

    接触WPF也有两个多月了,有了一定的理论基础和项目经验,现在打算写一个系列,做出来一个WPF的控件库。下面这篇文章主要给大家介绍了关于WPF自定义控件和样式之自定义按钮(Button)的相关资料,需要的朋友可以参考下。
    2018-04-04
  • C#反射实现插件式开发的过程详解

    C#反射实现插件式开发的过程详解

    插件式架构,一种全新的、开放性的、高扩展性的架构体系,插件式架构设计好处很多,把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现,这篇文章主要介绍了C#反射实现插件式开发,需要的朋友可以参考下
    2023-09-09
  • C# RabbitMQ的使用详解

    C# RabbitMQ的使用详解

    本文主要介绍了C# RabbitMQ的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • C#常用类库Google.Protobuf的使用小结

    C#常用类库Google.Protobuf的使用小结

    Google.Protobuf作为谷歌推出的高效序列化框架,成为C#开发者实现高效数据传输与存储的首选类库,本文主要介绍了C#常用类库Google.Protobuf的使用小结,感兴趣的可以了解一下
    2026-05-05
  • C#利用deskew算法实现图像文本倾斜校正

    C#利用deskew算法实现图像文本倾斜校正

    这篇文章主要为大家详细介绍了C#如何利用deskew算法实现图像文本倾斜校正,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • c# 遍历 Dictionary的四种方式

    c# 遍历 Dictionary的四种方式

    这篇文章主要介绍了c# 遍历 Dictionary的四种方式,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-09-09

最新评论