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”
string tmp = Path.Combine(@"C:\11",    @"\aa.txt"); tmp = @"\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 (合并两个路径字符串)方法的一些使用细节相关推荐

  1. php两个json怎么合并,合并两个json字符串

    我在合并两个json字符串时遇到了问题. 代码如下:input = {'ldb': 25, 'baseB': 4, 'code': 100, 'cache-6': 55, 'Xauthority': ...

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

    转载自  探讨JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需 ...

  3. python 多个列表合并_Python实现合并两个列表的方法分析

    本文实例讲述了Python实现合并两个列表的方法.分享给大家供大家参考,具体如下: 浏览博客看到一个问题:如何合并两个列表,今天就来探讨一下. 方法一 最原始,最笨的方法,分别从两个列表中取出所有的元 ...

  4. js两种拼接字符串方法

    js两种拼接字符串方法 function(msgArr) {//参数为一个数组,每一个对象为图片id和图片地址var len = msgArr.length;//第一种拼接方式,直接用"+& ...

  5. Python合并两个列表的方法

    浏览博客看到一个问题:如何合并两个列表,今天就来探讨一下. 方法一 最原始,最笨的方法,分别从两个列表中取出所有的元素,再放入新列表中就OK了.示例代码如下: list1 = [1,2,3] list ...

  6. java合并两个set_Java中合并两个集合的方法

    要在JAVA中合并两个集合,代码如下所示的− 示例import java.util.stream.*; import java.util.*; import java.io.*; public cla ...

  7. 关于JS合并两个数组的方法介绍

    我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [4,5,6];有两个数组a.b,需求是将两个数组合并成一个.方法如下:1.c ...

  8. JS合并两个数组的方法

    转自:微点阅读  https://www.weidianyuedu.com/content/3817386077036.html 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: ...

  9. JS合并两个数组的方法介绍

    转自:微点阅读  https://www.weidianyuedu.com 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [ ...

最新文章

  1. 【转自元宝兄】关于delphi Com+调用C# DLL的一点说明
  2. matlab gm 1 1,MATLAB 如何用GM(1,1)做预测?请大神帮忙!
  3. faster-rcnn中添加Mask中的RoiAlign层,使回归框更精确( roi_align_layer.cu:240] Check failed: error == cudaSuccess *)
  4. linux ls使用方法,Linux/Ubuntu ls命令详解使用格式和方法
  5. JDBC实现从Hive抽取数据导入Oracle
  6. tomcat人数限制_Tomcat 七最大并发连接数的正确修改方法
  7. 借助计算机软件进行文学写作,网络文学创作对编辑提出的新要求及建议
  8. DbEntry 开发实践:Wiki 系统(四)
  9. 【常用 JS 插件】jQuery TreeTable 树表格插件
  10. 0基础,如何快速学习自媒体,详细教程
  11. Android编译优化系列-kapt篇
  12. 拼多多商家怎样做来降低店铺退款的几率?
  13. ubuntu安装pandas
  14. Netty框架之责任链模式及其应用
  15. 要知道宇宙有多少星球,比数清地球上的沙子数量还要困难!
  16. 打造强大的质量团队——典型测试用例集
  17. 虚幻代码底层——虚幻属性系统(虚幻C++的反射机制)
  18. 数学黑洞(一)令人拍案叫绝的卡布列克常数
  19. 新版蜀山剑侠传3D立体格斗全方位剖析
  20. linux 显卡驱动 在哪里,linux下如何看我的显卡驱动是否装好了

热门文章

  1. 通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明
  2. 【OS学习笔记】二十六 保护模式八:任务门---任务切换
  3. 1001 A+B Format (20 分)
  4. .NET面试题解析(04)-类型、方法与继承
  5. dobbo 简单框架
  6. selenium之截图
  7. mysql: 模糊查询 feild like keyword or feild like keyword , concat(feild1,feild2,feild3) like keyword...
  8. [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)
  9. 使用json-lib进行Java和JSON之间的转换
  10. 批量造数据的一种方法