2011-04-16 83 views
25

我有一個配置文件myapp.exe.config。 在文件中,我有一個具有完整路徑文件名作爲值的屬性。我需要在配置文件中轉義反斜槓嗎?

<add key="InfoFile" value="c:\temp\info.txt" /> 

它似乎工作,如果我使用單個或雙反斜槓。也就是,

<add key="InfoFile" value="c:\\temp\\info.txt" /> 

也可以。什麼是正確的方法來做到這一點?

回答

21

你不需要那個。屬性值中的任何內容都是字符數據。

由於您正在使用C#讀取這些值,因此它們會被轉義,就好像它們是代碼中的文字路徑字符串一樣。

不管怎樣,你可能想知道,C#有@運營商宣佈逐字字符串,這意味着你沒有在代碼中使用文字路徑時需要轉義反斜線:

string somePath = @"C:\blah\blih\bluh.txt"; 
+0

我相信問題是如果你像這樣設置字符串是正確的:string m_path = ConfigurationManager.AppSettings [「InfoFile」]。ToString();您不能在此處添加「@」。 – smoore4 2017-04-25 21:37:40

+0

@SQLDBA你爲什麼有這樣的結論? :/ – 2017-04-26 15:58:58

+0

因爲問題開始「我有一個配置文件...」你是說你可以做到這一點? 我不這麼認爲。當然,你可以直接在代碼後面做你說的話,但是如果你正在從OP所在的app.config中讀取它,那麼它實際上只是單斜槓而不是雙。 – smoore4 2017-04-26 17:20:25

0

我認爲最好的會以防萬一,以防止雙反斜槓,但如果它工作,爲什麼改變它。當您將配置值讀入您的應用程序時,可以用「\」替換「\\」。

1

基本上URL或URI持有單斜槓\所以,最好使用單斜槓。編寫代碼時出現問題,但在XML中使用單斜槓沒有問題。

15

反斜槓在XML中沒有特別的含義,所以它們不應該被轉義。

此外,如果你想避免XML中的反斜槓,你不會使用\\,你可以使用&#92;

它使用雙反斜槓的原因還在於文件系統是寬容的。您可以使用路徑c:\\temp\\info.txt訪問文件c:\temp\info.txt

+0

文件系統不寬容。你可以擁有任意數量的\你想要的。在命令行上試用它。甚至是URL的支持!嘗試http://stackoverflow.com/////////////////questions/////////////5685344 – leppie 2011-04-16 09:23:32

+15

@leppie:你的觀點是什麼?你是自相矛盾的。 – Guffa 2011-04-16 09:42:24