取得檔案路徑的名稱、路徑、副檔名與目前程式程式位置心得筆記
程式完整檔案路徑
方法一 - 目前進程的完整路徑,包含檔案名
string sFile = this.GetType().Assembly.Location;
Console.WriteLine(sFile);
// 輸出:X:\XXX\XXX\XXX.exe
方法二 - 目前執行 exe 的檔案名
string sFile = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
Console.WriteLine(sFile);
// 輸出:X:\XXX\XXX\XXX.exe
方法三 - 啟動應用程式的可執行檔案的路徑,含可執行檔名
string sFile = System.Windows.Forms.Application.ExecutablePath;
Console.WriteLine(sFile);
// 輸出:X:\XXX\XXX\XXX.exe
程式所在目錄
方法一 - 應用程式的目前工作目錄
string sDir = System.IO.Directory.GetCurrentDirectory();
Console.WriteLine(sDir);
// 輸出:X:\XXX\XXX
方法二- 當前目錄的完全限定路徑(即該進程的啟動目錄)
string sDir = System.Environment.CurrentDirectory;
Console.WriteLine(sDir);
// 輸出:X:\XXX\XXX
方法三- 啟動應用程式的可執行檔案的路徑,不含可執行檔名
string sDir = System.Windows.Forms.Application.StartupPath;
Console.WriteLine(sDir);
// 輸出:X:\XXX\XXX
方法四- 當前 Thread 的應用程式的根目錄(包含目錄最下層的 \ 字元)
string sDir = System.AppDomain.CurrentDomain.BaseDirectory;
Console.WriteLine(sDir);
// 輸出:X:\XXX\XXX\
方法五- 包含該應用程式的目錄的名稱(包含目錄最下層的 \ 字元)
string sDir = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
Console.WriteLine(sDir);
// 輸出:X:\XXX\XXX\
指定檔案名稱。路徑操作
using System.IO; // 以下方法都在這個命名空間內
string sFile = @"C:\Sample\Test\File.bin";
// 要確定有這檔案存在,接下來的方法才能如預期地操作
if (File.Exists(sFile))
{
string sTmp;
// 取得檔名(不包含附檔名)
sTmp = Path.GetFileNameWithoutExtension(sFile);
Console.WriteLine(sTmp);
// 輸出:File
// 取得副檔名
sTmp = Path.GetExtension(sFile);
Console.WriteLine(sTmp);
// 輸出:bin
// 取得檔案路徑
sTmp = Path.GetDirectoryName(sFile);
Console.WriteLine(sTmp);
// 輸出:C:\Sample\Test
sTmp = Path.GetDirectoryName("C:\XXX");
Console.WriteLine(sTmp);
// 輸出:C:\
sTmp = Path.GetDirectoryName("C:\");
Console.WriteLine(sTmp);
// 輸出:
// ^空字元
// 取得根目錄
sTmp = Path.GetPathRoot(sFile);
Console.WriteLine(sTmp);
// 輸出:C:\
sTmp = Path.GetPathRoot("\Data\");
Console.WriteLine(sTmp);
// 輸出:\
sTmp = Path.GetPathRoot("Data.ext");
Console.WriteLine(sTmp);
// 輸出:
// ^空字元
// 取得完整檔案路徑
sTmp = Path.GetFullPath(sFile);
Console.WriteLine(sTmp);
// 輸出:C:\Sample\Test\File.bin
}
當組合數個檔案名稱路徑的字串時,要注意 \ 這個字元是否存在,不然很容易出錯!
建議當要組合多個檔案名稱路徑還是參考使用Path.Combine這個方法比較保險!