C#最常使用的相對路徑是從當前程序所在路徑開始相對尋徑,找到要找的路徑,即以下兩種最簡單的方式:
1. 程序根目錄.(即exe程序所在路徑)//下面兩個路徑是等價的,都是exe程序所在路徑(通常是bin\Debug\下)的Data文件夾下的test文本文件string Path1 = @'.\Data\test.txt'; string Path2 = @'Data\test.txt';
2. 上級目錄..string Path3 = @'..\Data\test.txt'; //程序根目錄的上級目錄(通常是bin\下)的Data文件夾下的test文本文件string Path4 = @'..\..\Data\test.txt'; //程序根目錄的上兩級目錄(通常是程序名\下)的Data文件夾下的test文本文件
當然,C#還可以靠指定的方式獲得相對路徑。應用VS2010創(chuàng)建了一WinForm項目,項目名為RelativePath,放在桌面上。編寫代碼通過八種特定方式獲取相對路徑并輸出顯示,運行效果如下:
下面簡要的介紹一下這八種獲得相對路徑的方式:
1. 獲取和設置當前目錄(該進程從中啟動的目錄)的完全限定路徑string str1 = System.Environment.CurrentDirectory; //Result: C:xxxxxx
2. 獲取應用程序的當前工作目錄string str2 = System.IO.Directory.GetCurrentDirectory(); //Result: C:xxxxxx
這個不一定是程序從中啟動的目錄啊,有可能程序放在C:\xxx里,這個函數(shù)有可能返回C:\Documents and Settings\WSY\,或者C:\Program Files\Adobe\,有時不一定返回什么東西,這是程序最后一次操作過的目錄,比如你用Word打開了E:\doc\my.doc這個文件,此時執(zhí)行這個方法就返回了E:\doc了。
3. 獲取啟動了應用程序的可執(zhí)行文件的路徑,不包括可執(zhí)行文件的名稱string str3 = System.Windows.Forms.Application.StartupPath; //Result: C:xxxxxx
4. 獲取啟動了應用程序的可執(zhí)行文件的路徑,包括可執(zhí)行文件的名稱string str4 = System.Windows.Forms.Application.ExecutablePath; //Result: C:xxxxxxxxx.EXE
5. 獲取當前 Thread 的當前應用程序域的基目錄,它由程序集沖突解決程序用來探測程序集string str5 = System.AppDomain.CurrentDomain.BaseDirectory; //Result: C:xxxxxx
6. 獲取和設置包含該應用程序的目錄的名稱string str6 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //Result: C:xxxxxx
7. 獲取當前進程的完整路徑,包含文件名string str7 = this.GetType().Assembly.Location; //Result: C:xxxxxxxxx.exe
8. 獲取新的 Process 組件并將其與當前活動的進程關聯(lián)的主模塊的完整路徑,包含文件名string str8 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; //Result: C:xxxxxxxxx.vshost.exe
此外,更多見的通過XML文件配置具體的路徑來達到合理的規(guī)劃配置文件的具體存放位置,如WEB中的配置文件中的路徑 string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @'moduleM3ExampleMuColor.txt';StreamReader smRead = new StreamReader(path, System.Text.Encoding.Default); //設置路徑 |
|
來自: 李珂consilpa3m > 《待分類》