Windows路径中多个反斜杠的后果(如果有的话)是什么?

时间:2015-05-11 21:13:56

标签: c# windows command-prompt

在我的程序中,我经常拥有在app.config文件中配置的文件名和/或路径。这通常是这样的:

<add key="LogFileDirectory" value="C:\Logs" />
<add key="SaveLogFileTo" value="MyLogFile.txt" />

在我的实际应用程序代码中,我经常将这些代码与类似的代码连接起来:

var logFile = ConfigurationManager.AppSettings["LogFileDirectory"]
+ @"\" +
ConfigurationManager.AppSettings["SaveLogFileTo"];

现在,上述代码的结果将给出C:\Logs\MyLogFile.txt的日志文件路径,但是,如果最终用户将配置文件中的日志文件目录指定为带有反斜杠的C:\Logs\ ,我的代码导致实际路径C:\Logs\\MyLogFile.txt,目录和文件之间有双反斜杠。

根据我的经验,这在实践中效果很好。事实上,即使是在命令提示符下执行cd c:\\\\\\windows\\\也是如此。

我的问题是,拥有这样的路径会带来什么后果?我不想在生产代码中使用这个“功能”,如果它是未记录的东西,并且在未来的某个时候可能会被新版Windows破坏。

1 个答案:

答案 0 :(得分:3)

我知道没有任何后果,并且在未来的版本中不会被打破,因为很多人会像你一样做。

但是,在C#中组合路径的正确方法是使用Path.Combine,这将为您删除任何额外的反斜杠:

var logFile = Path.Combine(
    ConfigurationManager.AppSettings["LogFileDirectory"],
    ConfigurationManager.AppSettings["SaveLogFileTo"]);