總結C#獲取當前路徑的7種方法 C#獲取當前路徑的方法如下: 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName -獲取模塊的完整路徑。 2. System.Environment.CurrentDirector ...
總結C#獲取當前路徑的7種方法
- C#獲取當前路徑的方法如下:
- 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
- -獲取模塊的完整路徑。
- 2. System.Environment.CurrentDirectory
- -獲取和設置當前目錄(該進程從中啟動的目錄)的完全限定目錄。
- 3. System.IO.Directory.GetCurrentDirectory()
- -獲取應用程式的當前工作目錄。這個不一定是程式從中啟動的目錄啊,有可能程式放在C:\www里,這個函數有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\,有時不一定返回什麼東東,我也搞不懂了。
- 4. System.AppDomain.CurrentDomain.BaseDirectory
- -獲取程式的基目錄。
- 5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
- -獲取和設置包括該應用程式的目錄的名稱。
- 6. System.Windows.Forms.Application.StartupPath
- -獲取啟動了應用程式的可執行文件的路徑。效果和2、5一樣。只是5返回的字元串後面多了一個"\"而已
- 7. System.Windows.Forms.Application.ExecutablePath
- -獲取啟動了應用程式的可執行文件的路徑及文件名,效果和1一樣。
- 對於Windows程式和Web 應用程式來說,他們運行的路徑是不一樣的,所以關鍵是判斷當前運行的程式是哪種程式.於是我們可以使用如下的代碼
- 1 string path = "";
- 2
- 3 if (System.Environment.CurrentDirectory == AppDomain.CurrentDomain.BaseDirectory)//Windows應用程式則相等
- 4
- 5 ...{
- 6
- 7 path = AppDomain.CurrentDomain.BaseDirectory;
- 8
- 9 }
- 10
- 11 else
- 12
- 13 ...{
- 14
- 15 path = AppDomain.CurrentDomain.BaseDirectory + "Bin\";
- 16
- 17 }
- 這樣如果我們寫了一個類庫,類庫中用到了Assembly.LoadFrom,由於是通用類庫,所以可能用到Windows程式中也可能用到Web中,那麼用上面的代碼就很方便了.
- 1、Server.MapPath
- 2、System.Windows.Forms.StartupPath
- 3、Type.Assembly.Location
- C#獲取當前路徑方法2可以應用於控制台應用程式,WinForm應用程式,Windows服務,方法1可以應用於Web應用程式,方法3都可以應用。
- 但方法3是載入應用程式的路徑。如果是Web應用程式,取得的路徑是:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目錄。所以Web項目還是使用Server.MapPath吧。否則建議使用方法2。如果自己新建類庫。可以加入對System.Windows.Forms.StartupPath的引用後使用。
- C#獲取當前路徑的方法就總結到這裡,希望對大家有所幫助。
- C#獲取程式當前路徑的方法
- //獲取新的 Process 組件並將其與當前活動的進程關聯的主模塊的完整路徑,包含文件名(進程名)。
- string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
- result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)
- //獲取和設置當前目錄(即該進程從中啟動的目錄)的完全限定路徑。
- string str = System.Environment.CurrentDirectory;
- result: X:\xxx\xxx (.exe文件所在的目錄)
- //獲取當前 Thread 的當前應用程式域的基目錄,它由程式集衝突解決程式用來探測程式集。
- string str = System.AppDomain.CurrentDomain.BaseDirectory;
- result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")
- //獲取和設置包含該應用程式的目錄的名稱。
- string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
- result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")
- //獲取啟動了應用程式的可執行文件的路徑,不包括可執行文件的名稱。
- string str = System.Windows.Forms.Application.StartupPath;
- result: X:\xxx\xxx (.exe文件所在的目錄)
- //獲取啟動了應用程式的可執行文件的路徑,包括可執行文件的名稱。
- string str = System.Windows.Forms.Application.ExecutablePath;
- result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)
- //獲取應用程式的當前工作目錄(不可靠)。
- string str = System.IO.Directory.GetCurrentDirectory();
- result: X:\xxx\xxx (.exe文件所在的目錄)
- c# 獲取相對路徑
- 一、獲取當前文件的路徑
- 1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
- 獲取模塊的完整路徑,包括文件名。
- 2. System.Environment.CurrentDirectory
- 獲取和設置當前目錄(該進程從中啟動的目錄)的完全限定目錄。
- 3. System.IO.Directory.GetCurrentDirectory()
- 獲取應用程式的當前工作目錄。這個不一定是程式從中啟動的目錄啊,有可能程式放在C:\www里,這個函數有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\,有時不一定返回什麼東東,這是任何應用程式最後一次操作過的目錄,比如你用Word打開了E:\doc\my.doc這個文件,此時執行這個方法就返回了E:\doc了。
- 4. System.AppDomain.CurrentDomain.BaseDirectory
- 獲取程式的基目錄。
- 5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
- 獲取和設置包括該應用程式的目錄的名稱。
- 6. System.Windows.Forms.Application.StartupPath
- 獲取啟動了應用程式的可執行文件的路徑。效果和2、5一樣。只是5返回的字元串後面多了一個"\"而已
- 7. System.Windows.Forms.Application.ExecutablePath
- 獲取啟動了應用程式的可執行文件的路徑及文件名,效果和1一樣。
- 二、操作環境變數
- 利用System.Environment.GetEnvironmentVariable()方法可以很方便地取得系統環境變數,如:
- System.Environment.GetEnvironmentVariable("windir")就可以取得windows系統目錄的路徑。
- 以下是一些常用的環境變數取值:
- System.Environment.GetEnvironmentVariable("windir");
- System.Environment.GetEnvironmentVariable("INCLUDE");
- System.Environment.GetEnvironmentVariable("TMP");
- System.Environment.GetEnvironmentVariable("TEMP");
- System.Environment.GetEnvironmentVariable("Path");
- System.Environment.SystemDirectory ;C:/windows/system32目錄
- 最後貼出我進行上面操作獲得的變數值,事先說明,本人是編寫了一個WinForm程式,項目文件存放於D:\Visual Studio Projects\MyApplication\LifeAssistant,編譯後的文件位於D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug,最後的結果如下:
- 1、System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug\LifeAssistant.exe
- 2、System.Environment.CurrentDirectory=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug
- 3、System.IO.Directory.GetCurrentDirectory()=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug
- 1 asp.net webform用“Request.PhysicalApplicationPath獲取站點所在虛擬目錄的物理路徑,最後包含“\”;
- 2.c# winform用
- A:“Application.StartupPath”:獲取當前應用程式所在目錄的路徑,最後不包含“\”;
- B:“Application.ExecutablePath ”:獲取當前應用程式文件的路徑,包含文件的名稱;
- C:“AppDomain.CurrentDomain.BaseDirectory”:獲取當前應用程式所在目錄的路徑,最後包含“\”;
- D:“System.Threading.Thread.GetDomain().BaseDirectory”:獲取當前應用程式所在目錄的路徑,最後包含“\”;
- E:“Environment.CurrentDirectory”:獲取當前應用程式的路徑,最後不包含“\”;
- F:“System.IO.Directory.GetCurrentDirectory”:獲取當前應用程式的路徑,最後不包含“\”;
- 3.c# windows service
- 用“AppDomain.CurrentDomain.BaseDirectory”
- 或“System.Threading.Thread.GetDomain().BaseDirectory”;
- 用“Environment.CurrentDirectory”和
- “System.IO.Directory.GetCurrentDirectory”將得到“ system32”目錄的路徑;
- 如果要使用“Application.StartupPath”或“Application.ExecutablePath ”,需要手動添加對“System.Windows.Forms.dll ”的引用,併在程式開頭用“using System.Windows.Forms”聲明該引用;
- 4.在卸載程式獲取系統安裝的目錄:
- System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();
- string path=curPath.Location;//得到安裝程式類SetupLibrary文件的路徑,獲取這個文件路徑所在的目錄即得到安裝程式的目錄;
- 4、System.AppDomain.CurrentDomain.BaseDirectory=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug\
- 5、System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug\
- 6、System.Windows.Forms.Application.StartupPath=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug
- 7、System.Windows.Forms.Application.ExecutablePath=D:\Visual Studio Projects\MyApplication\LifeAssistant\bin\Debug\LifeAssistant.exe
- System.Environment.GetEnvironmentVariable("windir")=C:\WINDOWS
- System.Environment.GetEnvironmentVariable("INCLUDE")=C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
- System.Environment.GetEnvironmentVariable("TMP")=C:\DOCUME~1\zhoufoxcn\LOCALS~1\Temp
- System.Environment.GetEnvironmentVariable("TEMP")=C:\DOCUME~1\zhoufoxcn\LOCALS~1\Temp
- System.Environment.GetEnvironmentVariable("Path")=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\jdk1.5.0\bin;C:\MySQLServer5.0\bin;C:\Program Files\Symantec\pcAnywhere\;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
- C# 相對路徑 系統路徑
- 2007-12-22 09:53
- //獲取啟動了應用程式的可執行文件的路徑,不包括可執行文件的名稱。
- string str5=Application.StartupPath;
- //可獲得當前執行的exe的文件名。
- string str1 =Process.GetCurrentProcess().MainModule.FileName;
- //獲取和設置當前目錄(即該進程從中啟動的目錄)的完全限定路徑。備註 按照定義,如果該進程在本地或網路驅動器的根目錄中啟動,則此屬性的值為驅動器名稱後跟一個尾部反斜杠(如“C:\”)。如果該進程在子目錄中啟動,則此屬性的值為不帶尾部反斜杠的驅動器和子目錄路徑(如“C:\mySubDirectory”)。
- string str2=Environment.CurrentDirectory;
- //獲取應用程式的當前工作目錄。
- string str3=Directory.GetCurrentDirectory();
- //獲取基目錄,它由程式集衝突解決程式用來探測程式集。
- string str4=AppDomain.CurrentDomain.BaseDirectory;
- //獲取啟動了應用程式的可執行文件的路徑,不包括可執行文件的名稱。
- string str5=Application.StartupPath;
- //獲取啟動了應用程式的可執行文件的路徑,包括可執行文件的名稱。
- string str6=Application.ExecutablePath;
- //獲取或設置包含該應用程式的目錄的名稱。
- string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
- //例子
- Application.StartupPath;
- //可以得到F:\learning\c#Training\win\win\bin\Debug
- //註意自己補兩個\
- Application.StartupPath+"\\3.jpg";
- 在c#中,相對路徑是用"."和".."表示,
- "."代表當前目錄,
- ".."代表上一級錄。
- 例如 假設我用vs2005在D:\My Documents\Visual Studio 2005\Projects目錄里創建了一個名叫controls的項目,即在Projects文件夾里有一個controls文件夾,controls文件夾里有三個文件:controls.sln controls文件夾 GulfOfStLawrence文件夾。
- D:\My Documents\Visual Studio 2005\Projects\Controls\Controls\bin\Debug是這個簡單項目能夠運行的可執行文件Controls.exe
- 現在我想要 D:\My Documents\Visual Studio 2005\Projects\Controls\GulfOfStLawrence文件夾下的Gulf_of_St._Lawrence.mxd(arcgis desktop)工程文件路徑。
- 那麼相對路徑應該就是"..\..\..\GulfOfStLawrence\Gulf_of_St._Lawrence.mxd"
- 即string filename = @"..\..\..\GulfOfStLawrence\Gulf_of_St._Lawrence.mxd";
- 心得:1.用相對路徑能增加項目的可移植性。使一個工程在移植過程中變得簡單,節省了大量佈置與工程相關的文件的時間。(如果設置的是絕對路徑)。
- 2.使用相對路徑也使程式代碼變得簡單
- 3. 但有一點必須註意:(只能在同一個驅動器里(如:都在D:里)使用相對路徑)。