c# - Path.Combine 省略其中一个参数的可能原因

标签 c# concatenation

我注意到我的代码将文件写入了错误的文件夹,因此我添加了一些日志记录,结果令我吃惊。我的代码:

 string savePath = Path.Combine(mapping.Folder, fileMeta.RelativePath, fileMeta.Filename);
 logger.Info(mapping.Folder);
 logger.Info(fileMeta.RelativePath);
 logger.Info(fileMeta.Filename);
 logger.Info("savepath: {0}", savePath);

这是写入日志的内容:

C:\Sync
\0100_MACHINES
Layout US.pdf 
savepath: \0100_MACHINES\Layout US.pdf

谁能给出可能的原因,为什么 Path.Combine 省略第一个参数,而只组合第二个和第三个?有趣的是,这只发生在一台机器上。

最佳答案

第二个参数以反斜杠字符开头。这导致 Path.Combine 省略了之前的部分。通过添加 TrimStart 解决了这个问题:

string savePath = Path.Combine(mapping.Folder, 
                     fileMeta.RelativePath.TrimStart('\\'), 
                     fileMeta.Filename.TrimStart('\\'));

关于c# - Path.Combine 省略其中一个参数的可能原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136564/

相关文章:

c# - 我的 mvc 应用程序中出现防伪错误

python - 最后一个子进程调用在 FFMPEG 的串联代码中不起作用。我应该如何解决这个问题?

c# - 流畅验证 : Is it possible to add a RuleSet while invoking a validator using ValidateAndThrow

C# 数组最大值

c# - 单击 MVC 中的按钮时如何避免回发

c# - 这种方法叫什么名字,参数?

python - 如何将 Pandas 中的数据帧设为 "unconcatenate"?

matlab - 如何将元胞数组中不同大小的矩阵组合成MATLAB中的矩阵

perl - 我怎样才能只用连字符连接一些字段?

用于创建文件的 Matlab 字符串连接