为什么不走这条路呢?结合工作
本文关键字:结合 工作 条路 不走 为什么 | 更新日期: 2023-09-27 18:04:18
我有以下命令:
string reportedContentFolderPath =
Path.Combine(contentFolder.FullName.ToString(), @"'ReportedContent'");
当我查看调试器时,我可以看到以下内容:
contentFolder.FullName = "E:''"
然而reportedContentFolderPath = "''ReportedContent''"
为什么Path.Combine
切断了E:'?
在@"'ReportedContent'"
上有一个斜杠。你不想要这个(或者后面的那个,我怀疑)-试试:
string reportedContentFolderPath =
Path.Combine(contentFolder.FullName.ToString(), "ReportedContent");
来自文档:
如果
path2
不包含根(例如,path2
不以分隔符或驱动器规格开头),则结果是两条路径的连接,中间有一个分隔符。如果path2
包含根,则返回path2
。
在您的示例中,path2
确实包含根,因此返回时没有查看path1
。
在方法文档中有解释:
如果path2不包含根(例如,如果path2不以分隔符或驱动器规格开头),则结果是两个路径的连接,中间有一个分隔符。如果path2包含根目录,则返回path2。
我建议你通读一遍,了解所有可能的组合是如何产生的:路径。结合方法
路径。如果第二个参数以分隔字符('
)开头,则Combine将返回第二个参数。
我敢打赌,通过在第二个字符串中指定斜杠作为前缀,Combine方法假定当前驱动器。尝试删除斜杠
From MSDN(强调我的):
public static string Combine(string path1, string path2)
[…]
返回值类型:系统。字符串组合路径。如果指定的路径之一是零长度字符串,则此方法返回另一个路径。如果
path2
包含绝对路径,此方法返回path2
@"'ReportedContent'"
是绝对路径,因为它以反斜杠开头。
看起来像Path。Combine认为两个斜杠E:''
表示UNC路径,而UNC路径不应该以驱动器号作为前缀。将contentFolder更改为E:'
,它应该可以工作