我有一個配置文件myapp.exe.config。 在文件中,我有一個具有完整路徑文件名作爲值的屬性。我需要在配置文件中轉義反斜槓嗎?
<add key="InfoFile" value="c:\temp\info.txt" />
它似乎工作,如果我使用單個或雙反斜槓。也就是,
<add key="InfoFile" value="c:\\temp\\info.txt" />
也可以。什麼是正確的方法來做到這一點?
我有一個配置文件myapp.exe.config。 在文件中,我有一個具有完整路徑文件名作爲值的屬性。我需要在配置文件中轉義反斜槓嗎?
<add key="InfoFile" value="c:\temp\info.txt" />
它似乎工作,如果我使用單個或雙反斜槓。也就是,
<add key="InfoFile" value="c:\\temp\\info.txt" />
也可以。什麼是正確的方法來做到這一點?
你不需要那個。屬性值中的任何內容都是字符數據。
由於您正在使用C#讀取這些值,因此它們會被轉義,就好像它們是代碼中的文字路徑字符串一樣。
不管怎樣,你可能想知道,C#有@
運營商宣佈逐字字符串,這意味着你沒有在代碼中使用文字路徑時需要轉義反斜線:
string somePath = @"C:\blah\blih\bluh.txt";
我認爲最好的會以防萬一,以防止雙反斜槓,但如果它工作,爲什麼改變它。當您將配置值讀入您的應用程序時,可以用「\」替換「\\」。
基本上URL或URI持有單斜槓\
所以,最好使用單斜槓。編寫代碼時出現問題,但在XML中使用單斜槓沒有問題。
反斜槓在XML中沒有特別的含義,所以它們不應該被轉義。
此外,如果你想避免XML中的反斜槓,你不會使用\\
,你可以使用\
。
它使用雙反斜槓的原因還在於文件系統是寬容的。您可以使用路徑c:\\temp\\info.txt
訪問文件c:\temp\info.txt
。
我相信問題是如果你像這樣設置字符串是正確的:string m_path = ConfigurationManager.AppSettings [「InfoFile」]。ToString();您不能在此處添加「@」。 – smoore4 2017-04-25 21:37:40
@SQLDBA你爲什麼有這樣的結論? :/ – 2017-04-26 15:58:58
因爲問題開始「我有一個配置文件...」你是說你可以做到這一點? 我不這麼認爲。當然,你可以直接在代碼後面做你說的話,但是如果你正在從OP所在的app.config中讀取它,那麼它實際上只是單斜槓而不是雙。 –
smoore4
2017-04-26 17:20:25