Path.Combine (合并两个路径字符串)方法的一些使用细节

System.IO.Path.Combine 简单来说,就是合并两个路径字符串。 比如如下调用,Path.Combine(@"C:\11","aa.txt") 返回的字符串路径如后: C:\11\aa.txt

这个方法的声明如下: public static string Combine ( string path1, string path2 )

我们在合并一些目录的时候,它的两个参数有些特殊限制,下面我们就来依次看这些特殊限制

1、如果其中一个参数为 null ,会抛出异常: An unhandled exception of type ‘System.ArgumentNullException‘ occurred in mscorlib.dll Additional information: Value cannot be null.

2、如果指定的路径之一是零长度字符串,则该方法返回其他路径。当然,两个都是零长度字符串,则返回的就是 string.Empty ;

3、如果 path2 包含绝对路径,则该方法返回 path2。 比如:string tmp = Path.Combine(@"C:\11", @"D:\aa.txt"); tmp 就等于 @"D:\aa.txt"

4、 path2 不能以 \ 和 / 开头的字符串, 如果是这个字符串开头的,则返回 path2 。 比如以下代码: string p1 = "C:\\aa\\"; string p2 = "C:\\aa";

string p12 = "\\p12"; string p13 = "\\p13\\"; string p15 = "/p13/";

Console.WriteLine(Path.Combine(p1, p12)); Console.WriteLine(Path.Combine(p1, p13)); Console.WriteLine(Path.Combine(p1, p15)); Console.WriteLine(Path.Combine(p2, p12)); Console.WriteLine(Path.Combine(p2, p13)); Console.WriteLine(Path.Combine(p2, p15)); 依次显示的是: \p12 \p13\ /p13/ \p12 \p13\ /p13/

该函数工作原理

如果 path1 不是一个驱动器引用(即不是"C:"或"D:")而且不是以 DirectorySeparatorChar、AltDirectorySeparatorChar 或 VolumeSeparatorChar 中定义的有效分隔符结束,则在串联前将 DirectorySeparatorChar 追加到 path1 中。

如果 path2 不包括根(例如,如果 path2 没有以分隔符或驱动器规格起始),则结果是两个路径的串联,具有介于其间的分隔符。如果 path2 包括根,则返回 path2。

由于有空白时不进行参数分析,如果 path2 为" c:\\ ",则将其追加到 path1,而不是仅返回 path2。

不是目录和文件名的所有无效字符都被 Combine 方法解释为不可接受的,因为您可以将这些字符用于搜索通配符。例如,尽管 Path.Combine("c:\\", "*.txt") 可能是无效的(如果您要根据它创建一个文件),但它作为搜索字符串是有效的。因此 Combine 方法成功解释它。

Path.DirectorySeparatorChar 字段 提供平台特定的字符,该字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。 该字段的值在 Unix 上为斜杠("/"),在 Windows 和 Macintosh 操作系统上为反斜杠("\")。

Path.AltDirectorySeparatorChar 字段 提供平台特定的替换字符,该替换字符用于在反映分层文件系统组织的路径字符串中分隔目录级别。 该字段的值在 Unix 上为反斜杠("\"),在 Windows 和 Macintosh 操作系统上为斜杠("/")。

Path.VolumeSeparatorChar 字段 提供平台特定的卷分隔符。 该字段的值在 Windows 和 Macintosh 上为冒号(":"),在 Unix 操作系统上为斜杠("/")。

Path.Combine (合并两个路径字符串)方法的一些使用细节

时间: 2024-11-07 02:57:22

Path.Combine (合并两个路径字符串)方法的一些使用细节的相关文章

C#控制台基础 path.combine合并多个字符串,返回一个路径

1 代码 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace ConsoleApplication4 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 {

探讨JS合并两个数组的方法

我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: 1.concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果. 1 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a.b两个数组后,a.b两个数组的数据不变,同时会返回一个新的数组.

利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app

由于前几天要给工厂app和bootloader的hex的文件,网上很多都是bin的合并方法,bin的方法不再赘述,相信大家都能找到,现在将hex合并的方法写下来: 第一步:先打开第一个hex文件, 第二步:选择 "Merge data file",合并文件 第三步:两个工程有可能地址相同,会有如下提示: 此时,点击"否",然后把bootloader的hex关闭, 打开APP的hex,更改地址. 选择edit->relocate,此时需要写地址的偏移量,你需要查

JS合并两个数组的方法

我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: 1.concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果. 1 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a.b两个数组后,a.b两个数组的数据不变,同时会返回一个新的数组.

C#合并两个Dictionary的方法

直接代码: 1 public Dictionary<string, string> MergeDictionary(Dictionary<string, string> first, Dictionary<string, string> second) 2 { 3 if (first == null) first = new Dictionary<string, string>(); 4 if (second == null) return first; 5

基于用Path.Combine的优化

Path.Combine: 什么时候会用到Path.Combine呢?,当然是连接路径字符串的时候! 所以下面的代码可以完美的工作: public static void Main() { string[] arr_pa = { @"c:\abc\", @"c:\abc" }; string[] arr_pb = { @"test.txt" }; foreach (string pa in arr_pa) { foreach (string pb

java中获取各种上下文路径的方法小结

一.获得都是当前运行文件在服务器上的绝对路径在servlet里用:this.getServletContext().getRealPath(); 在struts用:this.getServlet().getServletContext().getRealPath(); 在Action里用:ServletActionContext.getRequest().getRealPath(); 以上三个获得都是当前运行文件在服务器上的绝对路径其实:request.getRealPath("url"

javascript合并两个数组

在开发的过程中,我们很多时候会遇到需要将两个数组合并成一个数组的情况出现. var arr1 = [1, 2, 3]; var arr2 = [4, 5, 6]; // 将arr1和arr2合并成为[1, 2, 3, 4, 5, 6] 这里总结一下在JavaScript中合并两个数组的方法. for循环数组 这个方式是最简单的,也是最容易实现的. var arr3 = []; // 遍历arr1 for (var i = 0; i < arr1.length; i++) { arr3.push(

Flask源码解析:字符串方法endswith与os.path.splittext()

1.字符串方法endswith endswith方法: def endswith(self, suffix, start=None, end=None): # real signature unknown; restored from __doc__ """ S.endswith(suffix[, start[, end]]) -> bool Return True if S ends with the specified suffix, False otherwise