首頁 > 後端開發 > C#.Net教程 > C# 程式從兩個絕對路徑取得相對路徑

C# 程式從兩個絕對路徑取得相對路徑

WBOY
發布: 2023-09-17 13:25:02
轉載
1618 人瀏覽過

C# 程序从两个绝对路径获取相对路径

簡介

讓我們試著理解C#程序,從兩個絕對路徑取得相對路徑。我們將使用URI(統一資源標識符)類別和MakeRelativeUri方法來理解。

我們首先要了解絕對路徑和相對路徑之間的差異。絕對路徑包括定位系統上的檔案或目錄所需的所有資訊。絕對路徑的範例是 C:\Program Files\Google Chrome\filename.exe。

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

我們將使用MakeRelativeUri方法來產生輸出。在開始對上述方法進行詳細解釋之前,我們應該了解類別是命名空間,它是該方法的根源。我們首先要了解System.IO命名空間,然後我們會了解URI類別。最後,我們將深入研究MakeRelativeUri方法、它的程式碼和演算法。

System.IO命名空間

System.IO 命名空間是 C# 中多個類別和方法工作背後的原因。它提供了各種類別來幫助我們執行輸入和輸出操作。借助它,我們可以讀寫檔案和各種目錄。其下的一些類別如下。

  • 檔案  我們可以透過這個類別來建立、複製、刪除和移動檔案。

  • #目錄 它提供了在目錄上建立、刪除和執行各種其他操作的方法。

  • #字串 它用於表示字元序列。

  • #Math  它提供了在C#程式中執行數學運算的方法。

  • #路徑它提供了在 C# 程式中處理檔案的方法。我們可以從絕對路徑中取得有或沒有副檔名的檔案名稱。借助此方法,我們將實現本文的目的,即從兩個絕對路徑獲取相對路徑,

URI 類別

C# 中的 Uri(統一資源識別碼)類是 System.IO 命名空間中的內建類,用於標識 Internet 或檔案系統中的資源。它是一個提供多個用於處理 URI 的屬性和方法的類別。下面解釋了一些 -

  • new Uri(string string1)  使用指定的URI字串初始化Uri類別的新實例。

  • #new Uri(string string1, string string2)  使用指定的URI字串和uriKind初始化Uri類別的新實例。

  • #MakeRelativeUri # 它是用來從兩個絕對路徑取得相對路徑。

#建立 URI 實例的語法如下 -

Uri uri = new Uri(“https://www.tutorialspoint.com”);
登入後複製

建立 URI 實例後,您可以使用它來存取某些方法和屬性。我們將在下面訪問的一種此類方法是 MakeRelativeUri 方法。

MakeRelativeUri方法

这是 C# 中 URI 类下的一个方法。它用于从两个绝对路径中查找相对路径。它是 System.IO 路径类下的内置方法,以两个绝对路径作为输入,并返回两者之间的相对路径。在现实世界中,当您需要在两个文件之间创建链接或想要在应用程序中导航时,它会很有帮助。

从两个绝对路径创建相对路径的语法如下所示−

Uri baseUri = new Uri(" http://www.tutorialspoint.com/");
Uri absoluteUri = new Uri("http://www.tutorialspoint.com/code1");
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri);
Console.WriteLine(relativeUri); 
登入後複製

算法

下面的算法将详细介绍MakeRelativeUri方法的概念,以及我们如何从两个绝对路径中找出相对路径。我们将逐步了解使用该方法的方法。

第 1 步 −  在输入参数中,我们有绝对路径和相对路径两种路径。

第二步 我们将把两个路径都以字符串的形式作为输入存储。

第 3 步我们将使用以下代码为它们创建 Uri 实例 -

Uri baseUri = new Uri(basePath);
登入後複製

第 4 步  现在我们将调用所需的方法来生成两个之间的相对路径,即 MakeRelativeUri 方法。

第五步 现在我们将把结果相对路径存储在输出字符串中。

第 6 步最后,我们将打印结果输出。

示例

using System;
using System.IO;
using System.Text;
class FileName {
   static void Main(string[] args) {
      String path1= @"C:\Drive\App\Images"; 
      
      // here we have stored the first absolute path in the form of a string.
      
      // we have taken the name of the string as path1.
      string path2=  @"C:\Drive\App\Documents\File.doc";
      
      // we have stored the second absolute path in the form of a string.
      
      //we have taken the name path2.
      Uri uri1= new Uri(path1);
      
      //now we have created a Uri instance of path1.
      
      // we have named it uri1.
      Uri uri2= new Uri(path2);
      
      // we have created another Uri instance of path2.
      
      // we have named it uri2.
      string relativePath =uri1.MakeRelativeUri(uri2).ToString();
      
      //here we have called the MakeRelativeUri method in order to generate the output.
      
      // the output generated here stores the relative path from two absolute paths.
      
      //we have stored it in the form of a string.
      
      //the string has been named as relativePath
      string ans= "NewFolder/" + relativePath;
      Console.WriteLine(ans); // the answer is printed finally.
   }
}
登入後複製

输出

NewFolder/../Documents\File.doc
登入後複製

时间复杂度

在上面的代码中,我们借助了 Uri 类。 Uri 类实例已由输入参数创建。类实例的时间复杂度为 O(1)。同样,在下面的代码中,调用的 MakeRelativeUri 方法也需要 O(1) 时间复杂度。总体而言,代码的时间复杂度为O(1)。

结论

在本文中,我们彻底讨论了 Uri 类的使用,并了解了它的一些方法。我们已经严格理解了这样一种方法,那就是MakeRelativeUri方法。

我们希望本文有助于增强您对 Uri 类和 MakeRelativeUri 方法的了解。

以上是C# 程式從兩個絕對路徑取得相對路徑的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板