Path.GetDirectoryName 方法

定义

重载

GetDirectoryName(String)

返回指定路径的目录信息。

GetDirectoryName(ReadOnlySpan<Char>)

返回由字符范围表示的指定路径的目录信息。

GetDirectoryName(String)

返回指定路径的目录信息。

public:
 static System::String ^ GetDirectoryName(System::String ^ path);
public static string GetDirectoryName (string path);
public static string? GetDirectoryName (string? path);
static member GetDirectoryName : string -> string
Public Shared Function GetDirectoryName (path As String) As String

参数

path
String

文件或目录的路径。

返回

path 的目录信息;如果 path 表示根目录或为 null,则为 null。 如果 path 不包含目录信息,则返回 Empty

例外

.NET Framework 和 .NET Core 版本早于 2.1:参数path包含无效字符、为空或仅包含空格。

path 参数超过系统定义的最大长度。

注意:在 .NET for Windows 应用商店应用可移植类库中,请改为捕获基类异常 IOException

示例

以下示例演示如何在基于 Windows 的桌面平台上使用 GetDirectoryName 方法。

String^ filePath = "C:\\MyDir\\MySubDir\\myfile.ext";
String^ directoryName;
int i = 0;

while (filePath != nullptr)
{
    directoryName = Path::GetDirectoryName(filePath);
    Console::WriteLine("GetDirectoryName('{0}') returns '{1}'",
        filePath, directoryName);
    filePath = directoryName;
    if (i == 1)
    {
        filePath = directoryName + "\\";  // this will preserve the previous path
    }
    i++;
}
/*
This code produces the following output:

GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir') returns 'C:\'
GetDirectoryName('C:\') returns ''
*/
string filePath = @"C:\MyDir\MySubDir\myfile.ext";
string directoryName;
int i = 0;

while (filePath != null)
{
    directoryName = Path.GetDirectoryName(filePath);
    Console.WriteLine("GetDirectoryName('{0}') returns '{1}'",
        filePath, directoryName);
    filePath = directoryName;
    if (i == 1)
    {
        filePath = directoryName + @"\";  // this will preserve the previous path
    }
    i++;
}
/*
This code produces the following output:

GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
GetDirectoryName('C:\MyDir') returns 'C:\'
GetDirectoryName('C:\') returns ''
*/
Dim filepath As String = "C:\MyDir\MySubDir\myfile.ext"
Dim directoryName As String
Dim i As Integer = 0

While filepath <> Nothing
    directoryName = Path.GetDirectoryName(filepath)
    Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", _
        filepath, directoryName)
    filepath = directoryName
    If i = 1 Then
       filepath = directoryName + "\"  ' this will preserve the previous path
    End If
    i = i + 1
End While

'This code produces the following output:
'
' GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'
' GetDirectoryName('C:\MyDir\MySubDir') returns 'C:\MyDir'
' GetDirectoryName('C:\MyDir\') returns 'C:\MyDir'
' GetDirectoryName('C:\MyDir') returns 'C:\'
' GetDirectoryName('C:\') returns ''

注解

在大多数情况下,此方法返回的字符串由路径中所有字符组成,但不包括最后一个目录分隔符 () 。 目录分隔符可以是 DirectorySeparatorCharAltDirectorySeparatorChar。 如果路径由根目录(如“c:\”)组成, null 则返回 。

此方法不支持使用“file:”的路径。

由于返回的路径不包含最后一个目录分隔符字符 () ,因此将返回的路径传递回 GetDirectoryName 方法会截断每次对结果路径进行后续调用时,将截断一个文件夹级别。 例如,将路径“C:\Directory\SubDirectory\test.txt”传递到 将 GetDirectoryName 返回“C:\Directory\SubDirectory”。 将该路径“C:\Directory\SubDirectory”传递到 中 GetDirectoryName 将返回“C:\Directory”。

有关常见 I/O 任务的列表,请参阅 常见 I/O 任务

另请参阅

适用于

GetDirectoryName(ReadOnlySpan<Char>)

返回由字符范围表示的指定路径的目录信息。

public:
 static ReadOnlySpan<char> GetDirectoryName(ReadOnlySpan<char> path);
public static ReadOnlySpan<char> GetDirectoryName (ReadOnlySpan<char> path);
static member GetDirectoryName : ReadOnlySpan<char> -> ReadOnlySpan<char>
Public Shared Function GetDirectoryName (path As ReadOnlySpan(Of Char)) As ReadOnlySpan(Of Char)

参数

path
ReadOnlySpan<Char>

要从中检索目录信息的路径。

返回

path目录信息,或空范围(如果 pathnull、空范围或根 (,例如 \、C:或 \\server\share) )。

注解

与字符串重载不同,此方法不会规范化目录分隔符。

另请参阅

适用于