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+ 浏览量

开启你的职业生涯

完成课程并获得认证

开始学习
广告