根据有关Path.Combine方法的官方文档:https://msdn.microsoft.com/en-us/library/fyy7a5kt(v = vs.110).aspx
备注
如果path1不是驱动器引用(即"C:"或"D:")并且不以DirectorySeparatorChar,AltDirectorySeparatorChar或VolumeSeparatorChar中定义的有效分隔符结束,则在连接之前会将DirectorySeparatorChar附加到path1.
这意味着它不会\在驱动器号之后添加,所以这段代码:
var path1 = @"c:";
var path2 = @"file.txt";
Path.Combine(path1, path2);
Run Code Online (Sandbox Code Playgroud)
将产生C:file.txt哪些不会强制指向file.txt放入的文件c:.
这背后的原因是什么?
Kev*_*sse 15
Path.Combine这样做是因为c:file.txt它实际上是一个有效的路径.
如果文件名仅以磁盘指示符开头但不以冒号后面的反斜杠开头,则会将其解释为指定字母的驱动器上当前目录的相对路径.请注意,当前目录可能是也可能不是根目录,具体取决于在该磁盘上最近的"更改目录"操作期间设置的目录.
简而言之,c:file.txt将在C:驱动器的当前目录中c:\file.txt搜索文件,同时将搜索驱动器根文件夹中的文件(忽略当前目录).
由于Path.Combine无法知道您期望的行为是什么,因此无法自动添加反斜杠.
| 归档时间: |
|
| 查看次数: |
1463 次 |
| 最近记录: |