C#程式:從絕對路徑獲取檔名


簡介

讓我們嘗試理解如何使用C#程式從絕對路徑中獲取檔名。我們將學習如何使用`File`類下的`GetFileName`方法獲取檔名,以及另一個`GetFileNameWithoutExtension`方法,該方法將返回指定路徑字串的檔名(不含副檔名)。為了從兩個絕對路徑獲取相對路徑,我們將使用C#中的`Uri`類。`Uri`類提供了許多用於處理URI的方法,包括我們將要使用的`MakeRelativeUri`方法。

在C#中,檔案是用於儲存資訊的儲存位置。檔案的集合稱為目錄。C#中的檔案屬於`System.IO`名稱空間,該名稱空間還包含用於執行檔案操作的其他各種類。`Path`是屬於同一名稱空間的另一個類。路徑有兩種:絕對路徑和相對路徑。絕對路徑包含定位系統上檔案或目錄所需的所有資訊。絕對路徑的示例是C:\Program Files\Google Chrome\filename.exe。

相對路徑告訴我們檔案路徑相對於使用者正在工作的當前目錄的位置。考慮上面提到的類似示例,如果主可執行檔案位於C:\Program Files中,則filename.exe的相對路徑為Google Chrome\filename.exe。

GetFileName 方法

這是C#中`File`類下的方法,用於從絕對路徑獲取檔名。`Path.GetFileName`用於執行此操作。它接收絕對路徑作為輸入,並返回指定路徑的檔名及其副檔名。用作輸入的絕對路徑為字串形式。

語法

public static string GetFileName(string path)

這裡path是我們要從中獲取檔名的字串。

在上例中,`GetFileName`是`Path`類的 方法。此方法將返回路徑名稱中最後一個目錄字元分隔符之後的字元。如果不存在,則返回NULL值。如果路徑的最後一個字元是目錄或卷分隔符字元,則它也將返回NULL值。

類似地,如果路徑為空,則它將返回NULL值。

如果檔名是“C:\mydir\filename.exe”,則輸出為filename.exe。

演算法

下面的演算法將逐步說明如何使用`File.GetFileName()`方法獲取檔名。

例如,如果我們必須查詢檔名,我們可以使用以下演算法來理解:

步驟1  建立一個字串,用於儲存檔案路徑的名稱,記住這是一個絕對路徑。

步驟2  建立一個名為filename的字串,最初儲存null值。

步驟3  我們將`GetFileName`方法的輸出儲存在字串filename中。

步驟4  由於上述程式碼中的檔名是“myfile”,則輸出也將相同。

步驟5  如果路徑為空,則返回的輸出也將為NULL。

步驟6  使用`GetFileName`方法,我們可以從絕對路徑返回檔名。

示例

using System;
using System.IO;
using System.Text;

class FileName {
   static void Main(string[] args) {
      //declaring the string path.
      string path = "E://Jinku Hu//Starting Over//Csharp//myfile.md";
      
      //declaring the string filename.
      string filename = null;
      
      //we will be storing the value in the filename variable.
      filename = Path.GetFileName(path);
      Console.WriteLine(filename);
      Console.ReadLine();
   }
}

輸出

myfile.md

時間複雜度

在上文提到的程式碼中,我們可以觀察到主函式內沒有迴圈或巢狀迴圈,因此時間複雜度只是O(1)。

GetFileNameWithoutExtension 方法

前面解釋的方法是使用`GetFileName`方法返回檔名。現在我們將瞭解如何返回不含副檔名的檔名。假設路徑名稱是“C:\Program Files\Google Chrome\filename.exe”,則返回的輸出是“filename”。它接收絕對路徑作為輸入,並返回檔名作為輸出。用作輸入的絕對路徑為字串形式。語法 - “`public static string GetFileName(string path)`”,這裡path是我們要從中獲取不含副檔名的檔名的字串。

在上例中,`GetFileNameWithoutExtension`是`Path`類的 方法。此方法將返回路徑名稱中最後一個目錄字元分隔符之後的字元(不含副檔名)。如果不存在,則返回NULL值。如果路徑的最後一個字元是目錄或卷分隔符字元,則它也將返回NULL值。

演算法

在此演算法中,我們將瞭解使用`GetFileNameWithoutExtension`方法逐步返回不含副檔名的檔名的步驟。

步驟1  建立一個字串,用於儲存絕對路徑的名稱。

步驟2  建立另一個名為filename的字串,該字串將作為輸出返回。

步驟3 − 字串filename將儲存null作為其初始值。

步驟4  使用`GetFileNameWithoutExtension`方法生成的輸出將儲存在字串filename中。

步驟5  如果檔案為空,則輸出也將相同。

步驟6 − 因此,我們可以使用`GetFileNameWithoutExtension`方法返回不含副檔名的檔名。

示例

using System;
using System.IO;
using System.Text;

class FileName {
   static void Main(string[] args) {
      //declare the string path first.
      string path = "C:\Program Files\Google Chrome\filename.exe";
      
      //declare the string filename and store null initially.
      string filename = null;
      filename = Path.GetFileNameWithoutExtension(path);
      
      //store the answer in the variable filename.
      Console.WriteLine(filename);
      Console.ReadLine();
   }
}

輸出

filename.exe

時間複雜度

在上文提到的程式碼中,我們可以看到只使用了直接生成輸出並將其儲存在相應變數中的方法。沒有使用任何迴圈或任何複雜的遞迴函式。這使得時間複雜度為O(1)。

結論

在本文中,我們廣泛討論了使用`GetFileName`方法從包含副檔名的絕對路徑獲取C#程式的檔名,以及使用`GetFileNameWithoutExtension`方法獲取不含副檔名的檔名。

我們希望本文能幫助您增強對C#的瞭解。

更新於:2023年4月21日

2K+ 瀏覽量

開啟你的職業生涯

完成課程並獲得認證

開始學習
廣告