2012年11月18日 星期日

[學習] Directory.GetCurrentDirectory 和 Application.StartupPath 區別

Imports System.IO

—————————————————————————————
StartupPath 程式執行後,路徑位置不因外在因素而變。
GetCurrentDirectory 程式執行後,路徑位置會因外在因素而變。
—————————————————————————————

獲取文件路徑定義
Application.StartupPath——獲取啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。
Environment.CurrentDirectory——獲取和設置當前目錄(即該進程從中啟動的目錄)的完全限定路徑。
Application.ExecutablePath——獲取啟動了應用程序的可執行文件的路徑,包括可執行文件的名稱。
Directory.GetCurrentDirectory()——獲取應用程序的當前工作目錄。
Directory.GetCurrentDirectory()——程序文件自身的路徑。


GetCurrentDirectory 會受 OpenFileDialog(SaveFileDialog) 的影響,而改變路徑位置。
假如有兩個程式 C:/A/a.exe 和 C:/B/b.exe
當在 a.exe 中啟動 b.exe,System.Diagnostics.Process.Start(@"C:/B/b.exe")
此時 b.exe 中的 Directory.GetCurrentDirectory() 返回值為 “C:/A”
Application.StartupPath 值為“C:/B”

如果直接在 C:/B/ 中啟動 b.exe,那麼兩個值就會一樣,都為“C:/B”
這就是 Directory.GetCurrentDirectory 和 Application.StartupPath 的區別

Application.StartupPath 是程序的啟動目錄,這個在程序運行以後,就不會改變了。
Directory.GetCurrentDirectory() 是"當前目錄",是可以在程序運行時候改變的 ,
用Directory.SetCurrentDirectory() 就可以改變。
Directory.GetCurrentDirectory() 初始值和 Application.StartupPath() 一樣。

參考:
[C#]使用 Path 類別取得檔案或目錄路徑資訊
File.Exists 方法
有关File.Exists(filename)的问题
c# 獲取相對路徑
取得目前執行程式的目錄

沒有留言:

張貼留言