2016-03-21 70 views
1

我注意到我的代码将文件写入不正确的文件夹,所以我添加了一些日志记录,结果令我惊讶。我的代码:Path.Combine可能的原因省略参数

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省略了第一个参数,只是结合了第二和第三?也有趣的是,这只发生在一台机器上。

回答

0

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

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