在我的程序中,我经常有在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新版本中被破坏的功能,我不想在生产代码中使用它。
System.IO.Path.Combine
。 - Styxxy@
,就像在类级别上声明日志文件一样:private static string logfile { get; set; }
然后将logFile分配为以下方式:@logFile = var logFile = ConfigurationManager.AppSettings["LogFileDirectory"]
等等... - MethodMan