Path.Combine (合并两个路径字符串)方法的一些使用细节
2012-05-15 12:37
531 查看
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(@"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 (合并两个路径字符串)方法的一些使用细节
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- Path.Combine 合并两个路径字符串,会出现的问题
- C#控制台基础 path.combine合并多个字符串,返回一个路径
- php关于使用strpos方法判断字符串中是否存在字符串的一些细节说明
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。使用非递归方法以及递归方法。
- C#中字符串一些使用方法
- 使用不同的方法结合/合并两个JS数组
- VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的
- sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符
- Java SE - 使用Java合并两个图像的方法
- 两个字符串合并为一个字符串的各种方法
- 合并的路径Path.Combine
- 在主方法中创建map集合中存储3个学生对象.key使用字符串表示编号(不能重复)value是学生对象。然后调用以下两个方法;
- 使用指针引用的方法和二维指针的方法交换两个字符串