【发布时间】:2015-07-22 13:17:05
【问题描述】:
在我的程序中,我经常在我的 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 中被破坏。
【问题讨论】:
-
你听说过 Path 类,尤其是 Path.Combine 方法吗?
-
如果您担心连接错误,请尝试使用
System.IO.Path.Combine。 -
是的,谢谢,我对那个方法有些熟悉,虽然在实践中用得不多。我更感兴趣的是多个反斜杠背后的理论似乎可以毫无问题地工作,以及这是否是一个有意的、记录在案的功能。
-
那么为什么不在配置文件的文件路径中添加双斜杠以及单个尾随
"\"或在日志文件前面使用字符串文字@像这样声明在类级别private static string logfile { get; set; }这样的日志文件然后像这样分配 logFile@logFile = var logFile = ConfigurationManager.AppSettings["LogFileDirectory"]等...... -
也许this 会有所帮助
标签: c# windows command-prompt