在我的程序中,我经常在 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 中被破坏。
据我所知,没有任何后果,并且在未来的版本中不太可能被破坏,因为很多人都会做和你一样的事情。
但是,在 C# 中组合路径的正确方法是使用Path.Combine,这将为您删除任何额外的反斜杠:
var logFile = Path.Combine(
ConfigurationManager.AppSettings["LogFileDirectory"],
ConfigurationManager.AppSettings["SaveLogFileTo"]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)