繁体   English   中英

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

[英]What are the consequences, if any, of multiple backslashes in Windows paths?

在我的程序中,我经常在 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:\>del c:\\foo.txt
The filename, directory name, or volume label syntax is incorrect.

C:\>del c:\\bar\foo.txt
The network path was not found.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM