2012-10-02 223 views
1

我有一個名爲settings.xml文件位於:獲取文件的相對路徑?

c:\solution1\solution1\data\settings.xml

現在,我做的:

XDocument doc = XDocument.Load(@"c:\solution1\solution1\settings.xml"); 

我想不出如何使用相對路徑做。

+0

開始見http://stackoverflow.com/questions/362790/what-is-the-best-way-to-determine-應用程序根目錄 – abatishchev

回答

5

如果你的意思是相對於你的可執行文件,您可以使用

string exeLocation = System.Reflection.Assembly.GetExecutingAssembly().CodeBase 

注意經常建議

System.Reflection.Assembly.GetExecutingAssembly().Location 

將獲得其中的組件目前位於的路徑,它可以是不同的例如如果陰影副本正在執行。

您可以使用

string exeDir = System.IO.Path.GetDirectoryName(exeLocation); 

獲得可執行文件的目錄。

如果你想找到一個文件,是在數據目錄中的安裝位置下方,你可以做

string dataFile = Path.Combine(exeDir, "data\settings.xml"); 

需要注意的是在Windows Vista和更高版本,你不會有訪問默認爲安裝目錄下的目錄。

+0

在我的情況下,我的數據目錄不在我的exe目錄下 – Xaisoft

+0

那麼你希望Data目錄是相對*到*? –

+0

我將構建操作更改爲內容並複製文件(如果更新),所以我現在使用的是exe目錄路徑。 – Xaisoft

0

您還可以得到相對於當前目錄是從

System.Environment.CurrentDirectory 
+3

當前目錄可以更改(例如,通過使用文件對話框)。這種解決方案只能是偶然的,而不是原則性的。 – usr

+0

僅僅因爲它的改變並不意味着不是所期望的。 – AlSki