关于文件的默认读取和保存路径(转)
System.IO.Directory.GetCurrentDirectory()
這兩個方法獲得的路徑是一樣的,獲得的是當(dāng)前路徑,這個路徑不一定是程序所在的路徑。任何會改變當(dāng)前路徑的方法都會改變它,例如:OpenFileDialog每換一次目錄就會改變它。因此,用這2個方法獲取程序路徑并不可靠。
文件操作所使用的路徑就是這個路徑,而真正需要用到的路徑是根據(jù)程序啟動位置的變化而變化的.所以應(yīng)該獲取的是: System.Windows.Forms.Application.StartupPath;獲取啟動應(yīng)用程序的可執(zhí)行文件的路徑,不包括可執(zhí)行文件的名稱.然后在根據(jù)這個路徑做文件操作,就沒問題了.
以下是轉(zhuǎn)載的原文:
C#獲取程序路徑的方法中需要注意的地方
版本1
獲取運行程序路徑的方法主要有以下7種:
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
他獲取的是Module的文件名,如果在VS2008的調(diào)試環(huán)境中,獲取的是 [程序名].vshost.exe的完整文件名。
System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
這兩個方法獲得的路徑是一樣的,獲得的是當(dāng)前路徑,這個路徑不一定是程序所在的路徑。任何會改變當(dāng)前路徑的方法都會改變它,例如:OpenFileDialog每換一次目錄就會改變它。因此,用這2個方法獲取程序路徑并不可靠。
System.AppDomain.CurrentDomain.BaseDirectory
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
這兩個方法是可靠的獲取程序路徑的方法。返回的路徑最末以"\"結(jié)尾。可以方便的在后面加入任何Path。當(dāng)然就算沒有也可以用Path.Combine來合并路徑以獲得想要的路徑。
System.Windows.Forms.Application.StartupPath
這個方法也是可靠的獲取程序路徑的方法。不過返回的路徑最末并沒有"\"結(jié)尾。另外因為是Forms命名空間的。因此如果使用WPF還是不用的好。
System.Windows.Forms.Application.ExecutablePath
這個方法獲取的是執(zhí)行程序的完整文件名。是最可靠的方式,只需要去掉程序文件名就可以獲得路徑。
版本2:
//獲取新的 Process 組件并將其與當(dāng)前活動的進程關(guān)聯(lián)的主模塊的完整路徑,包含文件名(進程名)。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)
//獲取和設(shè)置當(dāng)前目錄(即該進程從中啟動的目錄)的完全限定路徑。
string str = System.Environment.CurrentDirectory;
result: X:\xxx\xxx (.exe文件所在的目錄)
//獲取當(dāng)前 Thread 的當(dāng)前應(yīng)用程序域的基目錄,它由程序集沖突解決程序用來探測程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")
//獲取和設(shè)置包含該應(yīng)用程序的目錄的名稱。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文件所在的目錄+"\")
//獲取啟動了應(yīng)用程序的可執(zhí)行文件的路徑,不包括可執(zhí)行文件的名稱。
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目錄)
//獲取啟動了應(yīng)用程序的可執(zhí)行文件的路徑,包括可執(zhí)行文件的名稱。
string str = System.Windows.Forms.Application.ExecutablePath;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目錄+.exe文件名)
//獲取應(yīng)用程序的當(dāng)前工作目錄(不可靠)。
string str = System.IO.Directory.GetCurrentDirectory();
result: X:\xxx\xxx (.exe文件所在的目錄)
-------------------------------------------
C#獲取本執(zhí)行程序所在的當(dāng)前路徑
1.獲取和設(shè)置當(dāng)前目錄的完全限定路徑。
string str = System.Environment.CurrentDirectory;
Result: C:\xxx\xxx
2.獲取啟動了應(yīng)用程序的可執(zhí)行文件的路徑,不包括可執(zhí)行文件的名稱。
string str = System.Windows.Forms.Application.StartupPath;
Result: C:\xxx\xxx
3.獲取新的 Process 組件并將其與當(dāng)前活動的進程關(guān)聯(lián)的主模塊的完整路徑,包含文件名。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Result: C:\xxx\xxx\xxx.exe
4.獲取當(dāng)前 Thread 的當(dāng)前應(yīng)用程序域的基目錄,它由程序集沖突解決程序用來探測程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
Result: C:\xxx\xxx\
5.獲取應(yīng)用程序的當(dāng)前工作目錄。
string str = System.IO.Directory.GetCurrentDirectory();
Result: C:\xxx\xxx
總結(jié)
以上是生活随笔為你收集整理的关于文件的默认读取和保存路径(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux每天进步一点点-7月22日
- 下一篇: ide硬盘接口图 sata硬盘接口图 S