C# 프로그램은 두 개의 절대 경로에서 상대 경로를 가져옵니다.

WBOY
풀어 주다: 2023-09-17 13:25:02
앞으로
1544명이 탐색했습니다.

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

소개

두 개의 절대 경로에서 상대 경로를 얻는 C# 프로그램을 이해해 보겠습니다. 이해를 위해 URI(Uniform Resource Identifier) ​​클래스와 MakeRelativeUri 메소드를 사용하겠습니다.

먼저 절대 경로와 상대 경로의 차이점을 이해해야 합니다. 절대 경로에는 시스템에서 파일이나 디렉터리를 찾는 데 필요한 모든 정보가 포함됩니다. 절대 경로의 예는 C:Program FilesGoogle Chromefilename.exe입니다.

상대 경로는 사용자가 작업 중인 현재 디렉터리에 상대적인 파일 경로를 알려줍니다. 위에서 언급한 유사한 예를 고려하면 기본 실행 파일이 C:Program Files에 있는 경우 filename.exe의 상대 경로는 Google Chromefilename.exe입니다.

MakeRelativeUri 메서드를 사용하여 출력을 생성하겠습니다. 위 메소드에 대한 자세한 설명을 시작하기 전에, 클래스는 메소드의 루트가 되는 네임스페이스라는 점을 이해해야 합니다. 먼저 System.IO 네임스페이스를 이해한 다음 URI 클래스를 이해하겠습니다. 마지막으로 MakeRelativeUri 메서드, 해당 코드 및 알고리즘을 자세히 살펴보겠습니다.

System.IO 네임스페이스

System.IO 네임스페이스는 C#에서 여러 클래스와 메서드가 작동하는 이유입니다. 입력 및 출력 작업을 수행하는 데 도움이 되는 다양한 클래스를 제공합니다. 이를 통해 파일과 다양한 디렉터리를 읽고 쓸 수 있습니다. 그 아래의 일부 클래스는 다음과 같습니다.

  • 파일 이 수업을 통해 파일을 생성, 복사, 삭제, 이동할 수 있습니다.

  • Directory 디렉터리에 대한 다양한 작업을 생성, 삭제 및 수행하는 방법을 제공합니다.

  • String 일련의 문자를 나타내는 데 사용됩니다.

  • Math C# 프로그램에서 수학 연산을 수행하는 방법을 제공합니다.

  • PathC# 프로그램에서 파일을 처리하는 방법을 제공합니다. 절대 경로에서 확장명이 있거나 없는 파일 이름을 얻을 수 있습니다. 이 방법을 사용하면 두 개의 절대 경로

  • 에서 상대 경로를 구하는 이 기사의 목적을 달성할 수 있습니다.

URI 수업

C#의 Uri(Uniform Resource Identifier) ​​클래스는 인터넷이나 파일 시스템에서 리소스를 식별하는 데 사용되는 System.IO 네임스페이스에 내장된 클래스입니다. URI 처리를 위한 여러 속성과 메서드를 제공하는 클래스입니다. 아래에 일부 설명이 있습니다 -

  • new Uri(string string1) 지정된 URI 문자열을 사용하여 Uri 클래스의 새 인스턴스를 초기화합니다.

  • new Uri(string string1, string string2) 지정된 URI 문자열과 uriKind를 사용하여 Uri 클래스의 새 인스턴스를 초기화합니다.

  • MakeRelativeUri 두 개의 절대 경로에서 상대 경로를 얻는 데 사용됩니다.

URI 인스턴스를 생성하는 구문은 다음과 같습니다. -

으아악

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿