簡體   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