C#最常使用的相對路徑是從當前程序所在路徑開始相對尋徑,找到要找的路徑,即以下兩種最簡單的方式:
//下面兩個路徑是等價的,都是exe程序所在路徑(通常是bin\Debug\下)的Data文件夾下的test文本文件 string Path1 = @".\Data\test.txt"; string Path2 = @"Data\test.txt";
string Path3 = @"..\Data\test.txt"; //程序根目錄的上級目錄(通常是bin\下)的Data文件夾下的test文本文件 string Path4 = @"..\..\Data\test.txt"; //程序根目錄的上兩級目錄(通常是程序名\下)的Data文件夾下的test文本文件
當然,C#還可以靠指定的方式獲得相對路徑。應用VS2010創建了一WinForm項目,項目名為RelativePath,放在桌面上。編寫代碼通過八種特定方式獲取相對路徑並輸出顯示,運行效果如下:
下面簡要的介紹一下這八種獲得相對路徑的方式:
string str1 = System.Environment.CurrentDirectory; //Result: C:xxxxxx
string str2 = System.IO.Directory.GetCurrentDirectory(); //Result: C:xxxxxx
這個不一定是程序從中啟動的目錄啊,有可能程序放在C:\xxx裡,這個函數有可能返回C:\Documents and Settings\WSY\,或者C:\Program Files\Adobe\,有時不一定返回什麼東西,這是程序最後一次操作過的目錄,比如你用Word打開了E:\doc\my.doc這個文件,此時執行這個方法就返回了E:\doc了。
string str3 = System.Windows.Forms.Application.StartupPath; //Result: C:xxxxxx
string str4 = System.Windows.Forms.Application.ExecutablePath; //Result: C:xxxxxxxxx.EXE
string str5 = System.AppDomain.CurrentDomain.BaseDirectory; //Result: C:xxxxxx
string str6 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //Result: C:xxxxxx
string str7 = this.GetType().Assembly.Location; //Result: C:xxxxxxxxx.exe
string str8 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; //Result: C:xxxxxxxxx.vshost.exe
此外,更多見的通過XML文件配置具體的路徑來達到合理的規劃配置文件的具體存放位置,如WEB中的配置文件中的路徑
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"moduleM3ExampleMuColor.txt"; StreamReader smRead = new StreamReader(path, System.Text.Encoding.Default); //設置路徑