我在我的項目文件夾外有一個XML文件,我想從我的代碼中訪問它,以便在任何機器上執行代碼,我會把路徑放在相對於該項目的目錄。硬編碼C中的相對路徑#
比方說作爲我的當前目錄是在文件夾A的例子,我想訪問該文件夾B中旁邊A.
我在我的項目文件夾外有一個XML文件,我想從我的代碼中訪問它,以便在任何機器上執行代碼,我會把路徑放在相對於該項目的目錄。硬編碼C中的相對路徑#
比方說作爲我的當前目錄是在文件夾A的例子,我想訪問該文件夾B中旁邊A.
如果XML文件始終是你的應用程序文件夾,您可以使用內。
工作路徑不一定是其中的可執行文件的位置。爲確保您可以使用從MSDN獲取的以下代碼。
string path;
path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
否則,如果它是Microsoft特殊文件夾的一部分,例如.e.g MyDocuments,則可以使用。
Environment.SpecialFolder.MyDocuments
你會使用這樣的。
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
"myfile.xml")
輸出將是當前用戶My Documents文件夾中myfile.xml的路徑。在我的情況下,它會給我C:\Users\eandersson\Documents\myfile.xml
。
Path.Combine在這裏非常有幫助,因爲它可以讓我們將多個磁盤路徑合併爲一個。
編輯:需要評論的其他信息。
我認爲最好的方法是使用Directory.GetParent。
Directory.GetParent(Environment.CurrentDirectory).FullName
並做這樣的事情。
Path.Combine(Directory.GetParent(Environment.CurrentDirectory).FullName, "PathB", "myfile.xml")
這會在您的項目文件夾相同的位置尋找PathB。
C:\MyProjects\PathA\MyExecutable.exe
C:\MyProjects\PathB\myfile.xml
比方說,你正在運行從該位置MyExecutable.exe
。上面的代碼應該自動返回PathB中的第二個位置,文件爲myfile.xml
。
可以說我當前的目錄在文件夾A中,而文件在A..how旁邊的文件夾B中,這可以解決它嗎? – 2013-02-10 11:17:34
請讓我知道,如果這是你在找什麼。 :) – eandersson 2013-02-10 11:31:45
是的,它實際上工作......謝謝你大的時間;) – 2013-02-10 11:34:23
http://stackoverflow.com/questions/6041332/best-way-to-get-application-folder-path – kenny 2013-02-10 11:10:10
該項目的目錄(如'.csproj'文件的目錄)將無關緊要目標機器,但可執行文件的目錄('.exe'文件)可能是。 *是可執行文件和Xml文件之間的相對路徑? – 2013-02-10 11:10:41
你對這個文件的位置有任何控制嗎?如果它是從其他應用程序或用戶操作生成的,則總是有可能發生某些變化。爲什麼不使用配置文件並閱讀那裏的確切位置? – Steve 2013-02-10 12:21:45