Path.GetDirectoryName 方法

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

**命名空间:**System.IO
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public Shared Function GetDirectoryName ( _
    path As String _
) As String
用法
Dim path As String
Dim returnValue As String

returnValue = Path.GetDirectoryName(path)
public static string GetDirectoryName (
    string path
)
public:
static String^ GetDirectoryName (
    String^ path
)
public static String GetDirectoryName (
    String path
)
public static function GetDirectoryName (
    path : String
) : String

参数

  • path
    文件或目录的路径。

返回值

包含 path 目录信息的 String;或者为 空引用(在 Visual Basic 中为 Nothing)(如果 path 表示根目录、是空字符串 ("") 或是 空引用(在 Visual Basic 中为 Nothing))。如果 path 没有包含目录信息,则返回 String.Empty

异常

异常类型 条件

ArgumentException

path 参数包含无效字符、为空、仅包含空白或包含通配符。

PathTooLongException

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

备注

大多数情况下,此方法返回的字符串由路径中最后的 DirectorySeparatorCharAltDirectorySeparatorChar 之前(不包括该字符)的所有字符组成。如果路径由根目录组成,如“c:\”,则返回空。注意此方法不支持使用“file:”的路径。由于返回的路径不包含 DirectorySeparatorCharAltDirectorySeparatorChar,因此将返回的路径传回 GetDirectoryName 方法会导致随后每次调用得到的字符串时截断一个文件夹级别。例如,将路径“C:\Directory\SubDirectory\test.txt”传入 GetDirectoryName 方法将返回“C:\Directory\SubDirectory”。将该字符串“C:\Directory\SubDirectory”传入 GetDirectoryName 将导致返回“C:\Directory”。

有关使用此方法的示例,请参见“示例”部分。下表列出了其他典型或相关的 I/O 任务的示例。

若要执行此操作...

请参见本主题中的示例...

创建文本文件。

如何:向文件写入文本

写入文本文件。

如何:向文件写入文本

读取文本文件。

如何:从文件读取文本

检索文件扩展名。

GetExtension

检索文件的完全限定路径。

GetFullPath

只检索路径中的文件名。

GetFileNameWithoutExtension

更改文件扩展名。

ChangeExtension

示例

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

Dim fileName As String = "C:\mydir\myfile.ext"
Dim pathname As String = "C:\mydir\"
Dim rootPath As String = "C:\"
Dim directoryName As String

directoryName = Path.GetDirectoryName(fileName)
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", fileName, directoryName)

directoryName = Path.GetDirectoryName(pathname)
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", pathname, directoryName)

directoryName = Path.GetDirectoryName(rootPath)
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", rootPath, directoryName)

'This code produces the following output:
'
'GetDirectoryName('C:\mydir\myfile.ext') returns 'C:\mydir'
'GetDirectoryName('C:\mydir\') returns 'C:\mydir'
'GetDirectoryName('C:\') returns ''
string fileName = @"C:\mydir\myfile.ext";
string path = @"C:\mydir\";
string rootPath = @"C:\";
string directoryName;
    
directoryName = Path.GetDirectoryName(fileName);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    fileName, directoryName);

directoryName = Path.GetDirectoryName(path);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    path, directoryName);

directoryName = Path.GetDirectoryName(rootPath);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    rootPath, directoryName);
/*
This code produces the following output:

GetDirectoryName('C:\mydir\myfile.ext') returns 'C:\mydir'
GetDirectoryName('C:\mydir\') returns 'C:\mydir'
GetDirectoryName('C:\') returns ''

*/
String^ fileName = "C:\\mydir\\myfile.ext";
String^ path = "C:\\mydir\\";
String^ rootPath = "C:\\";
String^ directoryName;
directoryName = Path::GetDirectoryName( fileName );
Console::WriteLine( "GetDirectoryName('{0}') returns '{1}'", fileName, directoryName );
directoryName = Path::GetDirectoryName( path );
Console::WriteLine( "GetDirectoryName('{0}') returns '{1}'", path, directoryName );
directoryName = Path::GetDirectoryName( rootPath );
Console::WriteLine( "GetDirectoryName('{0}') returns '{1}'", rootPath, directoryName );

/*
This code produces the following output:

GetDirectoryName('C:\mydir\myfile.ext') returns 'C:\mydir'
GetDirectoryName('C:\mydir\') returns 'C:\mydir'
GetDirectoryName('C:\') returns ''

*/
String fileName = "C:\\mydir\\myfile.ext";
String path = "C:\\mydir\\";
String rootPath = "C:\\";
String directoryName;

directoryName = Path.GetDirectoryName(fileName);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    fileName, directoryName);

directoryName = Path.GetDirectoryName(path);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    path, directoryName);

directoryName = Path.GetDirectoryName(rootPath);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    rootPath, directoryName);
/*
This code produces the following output:

GetDirectoryName('C:\mydir\myfile.ext') returns 'C:\mydir'
GetDirectoryName('C:\mydir\') returns 'C:\mydir'
GetDirectoryName('C:\') returns ''

*/
var fileName : String = "C:\\mydir\\myfile.ext";
var path : String = "C:\\mydir\\";
var rootPath : String = "C:\\";
var directoryName : String;
    
directoryName = Path.GetDirectoryName(fileName);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
                  fileName, directoryName);

directoryName = Path.GetDirectoryName(path);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
                  path, directoryName);

directoryName = Path.GetDirectoryName(rootPath);
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
                  rootPath, directoryName);
/*
This code produces the following output:

GetDirectoryName('C:\mydir\myfile.ext') returns 'C:\mydir'
GetDirectoryName('C:\mydir\') returns 'C:\mydir'
GetDirectoryName('C:\') returns ''

*/

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Path 类
Path 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何:从文件读取文本
如何:向文件写入文本