c# - Windows 路径中的多个反斜杠会产生什么后果(如果有的话)?

标签 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 被破坏的话。

最佳答案

据我所知没有任何后果,而且它不太可能在未来的版本中被破坏,因为很多人会和你做同样的事情。

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

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

关于c# - Windows 路径中的多个反斜杠会产生什么后果(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177768/

相关文章:

c# - 为什么我的区域特定 Web API 可以从所有其他区域访问?

windows - 让 vim 在 mobaxterm 中工作

java - 如何使用命令提示符了解窗口服务的状态

command-line - 如何获取所有以常用单词开头的Windows服务名称?

linux - 打印文件夹中所有文档的特定行

c# - 如何在 asp.net 网站中启用 saml 2.0 sso

c# - 为什么当我尝试访问我的任务的结果属性时此异步操作挂起?

c# - 带有分析小部件的分层设计 - 这段代码有味道吗?

c - SC 启动服务失败 1058

windows - 代码段描述符中的 D 标志对 x86-64 指令有何作用?