DirectoryInfo.GetDirectories 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回当前目录的子目录。
重载
| GetDirectories() | 返回当前目录的子目录。 | 
| GetDirectories(String) | 返回当前 DirectoryInfo 中、与给定搜索条件匹配的目录的数组。 | 
| GetDirectories(String, EnumerationOptions) | 返回当前 DirectoryInfo 中与指定的搜索模式和枚举选项匹配的目录的数组。 | 
| GetDirectories(String, SearchOption) | 返回当前 DirectoryInfo 中与给定的搜索条件匹配并使用某个值确定是否在子目录中搜索的目录的数组。 | 
GetDirectories()
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前目录的子目录。
public:
 cli::array <System::IO::DirectoryInfo ^> ^ GetDirectories();public System.IO.DirectoryInfo[] GetDirectories ();member this.GetDirectories : unit -> System.IO.DirectoryInfo[]Public Function GetDirectories () As DirectoryInfo()返回
一个 DirectoryInfo 对象数组。
例外
封装在 DirectoryInfo 对象中的路径无效,例如,在未映射的驱动器上。
调用方没有所要求的权限。
调用方没有所要求的权限。
示例
以下示例检索根目录中的所有目录,并显示目录名称。
using namespace System;
using namespace System::IO;
int main()
{
   
   // Make a reference to a directory.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );
   
   // Get a reference to each directory in that directory.
   array<DirectoryInfo^>^diArr = di->GetDirectories();
   
   // Display the names of the directories.
   Collections::IEnumerator^ myEnum = diArr->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      DirectoryInfo^ dri = safe_cast<DirectoryInfo^>(myEnum->Current);
      Console::WriteLine( dri->Name );
   }
}
using System;
using System.IO;
public class GetDirectoriesTest
{
    public static void Main()
    {
        // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("c:\\");
        // Get a reference to each directory in that directory.
        DirectoryInfo[] diArr = di.GetDirectories();
        // Display the names of the directories.
        foreach (DirectoryInfo dri in diArr)
            Console.WriteLine(dri.Name);
    }
}
open System.IO
// Make a reference to a directory.
let di = DirectoryInfo "c:\\"
// Get a reference to each directory in that directory.
let diArr = di.GetDirectories()
// Display the names of the directories.
for dri in diArr do
    printfn $"{dri.Name}"
Imports System.IO
Public Class GetDirectoriesTest
    Public Shared Sub Main()
        ' Make a reference to a directory.
        Dim di As New DirectoryInfo("c:\")
        ' Get a reference to each directory in that directory.
        Dim diArr As DirectoryInfo() = di.GetDirectories()
        ' Display the names of the directories.
        Dim dri As DirectoryInfo
        For Each dri In diArr
            Console.WriteLine(dri.Name)
        Next dri
    End Sub
End Class
注解
如果没有子目录,此方法将返回一个空数组。 此方法不是递归方法。
此方法预填充以下 DirectoryInfo 属性的值:
另请参阅
适用于
GetDirectories(String)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前 DirectoryInfo 中、与给定搜索条件匹配的目录的数组。
public:
 cli::array <System::IO::DirectoryInfo ^> ^ GetDirectories(System::String ^ searchPattern);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern);member this.GetDirectories : string -> System.IO.DirectoryInfo[]Public Function GetDirectories (searchPattern As String) As DirectoryInfo()参数
- searchPattern
- String
要与目录名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
返回
与 DirectoryInfo 匹配的 searchPattern 类型的数组。
例外
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern包含 方法GetInvalidPathChars()定义的一个或多个无效字符。
              searchPattern 为 null。
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
示例
以下示例对包含指定字母的路径中的目录进行计数。
using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\" );
      
      // Get only subdirectories that contain the letter "p."
      array<DirectoryInfo^>^dirs = di->GetDirectories( "*p*" );
      Console::WriteLine( "The number of directories containing the letter p is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         DirectoryInfo^ diNext = safe_cast<DirectoryInfo^>(myEnum->Current);
         Console::WriteLine( "The number of files in {0} is {1}", diNext, diNext->GetFiles()->Length );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }
}
using System;
using System.IO;
class Test
{
    public static void Main()
    {
        try
        {
            DirectoryInfo di = new DirectoryInfo(@"c:\");
            // Get only subdirectories that contain the letter "p."
            DirectoryInfo[] dirs = di.GetDirectories("*p*");
            Console.WriteLine("The number of directories containing the letter p is {0}.", dirs.Length);
            foreach (DirectoryInfo diNext in dirs)
            {
                Console.WriteLine("The number of files in {0} is {1}", diNext,
                    diNext.GetFiles().Length);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
open System.IO
try
    let di = DirectoryInfo @"c:\"
    // Get only subdirectories that contain the letter "p."
    let dirs = di.GetDirectories "*p*"
    printfn $"The number of directories containing the letter p is {dirs.Length}."
    for diNext in dirs do
        printfn $"The number of files in {diNext} is {diNext.GetFiles().Length}"
with e ->
    printfn $"The process failed: {e}"
Imports System.IO
Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\")
        Try
            'Get only subdirectories that contain the letter "p."
            Dim dirs As DirectoryInfo() = di.GetDirectories("*p*")
            Console.WriteLine("The number of directories containing the letter p is {0}.", dirs.Length)
            Dim diNext As DirectoryInfo
            For Each diNext In dirs
                Console.WriteLine("The number of files in {0} is {1}", diNext, _
                 diNext.GetFiles().Length)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class
注解
              searchPattern 可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern使用以下通配符说明符。
| 通配符说明符 | 匹配 | 
|---|---|
| *(星号) | 该位置的零个或多个字符。 | 
| ? (问号) | 该位置的零个字符或一个字符。 | 
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 ". 字符串 searchPattern “s*”搜索以字母“s”开头的所有名称 path 。
此方法预填充以下 DirectoryInfo 属性的值:
另请参阅
适用于
GetDirectories(String, EnumerationOptions)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前 DirectoryInfo 中与指定的搜索模式和枚举选项匹配的目录的数组。
public:
 cli::array <System::IO::DirectoryInfo ^> ^ GetDirectories(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);member this.GetDirectories : string * System.IO.EnumerationOptions -> System.IO.DirectoryInfo[]Public Function GetDirectories (searchPattern As String, enumerationOptions As EnumerationOptions) As DirectoryInfo()参数
- searchPattern
- String
要与目录名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
- enumerationOptions
- EnumerationOptions
描述要使用的搜索和枚举配置的对象。
返回
与 searchPattern 和 enumerationOptions 匹配的 DirectoryInfo 类型的数组。
例外
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern包含 方法GetInvalidPathChars()定义的一个或多个无效字符。
              searchPattern 为 null。
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
注解
              searchPattern 可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern使用以下通配符说明符。
| 通配符说明符 | 匹配 | 
|---|---|
| *(星号) | 该位置的零个或多个字符。 | 
| ? (问号) | 该位置的零个字符或一个字符。 | 
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 ". 字符串 searchPattern “s*”搜索以字母“s”开头的所有名称 path 。
此方法预填充以下 DirectoryInfo 属性的值:
适用于
GetDirectories(String, SearchOption)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前 DirectoryInfo 中与给定的搜索条件匹配并使用某个值确定是否在子目录中搜索的目录的数组。
public:
 cli::array <System::IO::DirectoryInfo ^> ^ GetDirectories(System::String ^ searchPattern, System::IO::SearchOption searchOption);public System.IO.DirectoryInfo[] GetDirectories (string searchPattern, System.IO.SearchOption searchOption);member this.GetDirectories : string * System.IO.SearchOption -> System.IO.DirectoryInfo[]Public Function GetDirectories (searchPattern As String, searchOption As SearchOption) As DirectoryInfo()参数
- searchPattern
- String
要与目录名匹配的搜索字符串。 此参数可以包含有效文本路径和通配符(* 和 ?)的组合,但不支持正则表达式。
- searchOption
- SearchOption
用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。
返回
与 DirectoryInfo 匹配的 searchPattern 类型的数组。
例外
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern包含 方法GetInvalidPathChars()定义的一个或多个无效字符。
              searchPattern 为 null。
              searchOption 不是有效的 SearchOption 值。
封装在 DirectoryInfo 对象中的路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
示例
以下示例列出了“c:\”中以字母“c”开头的所有目录和文件。
using namespace System;
using namespace System::IO;
ref class App
{
public:
    static void Main()
    {
        // Specify the directory you want to manipulate.
        String^ path = "c:\\";
        String^ searchPattern = "c*";
        DirectoryInfo^ di = gcnew DirectoryInfo(path);
        array<DirectoryInfo^>^ directories =
            di->GetDirectories(searchPattern, SearchOption::TopDirectoryOnly);
        array<FileInfo^>^ files =
            di->GetFiles(searchPattern, SearchOption::TopDirectoryOnly);
        Console::WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        for each (DirectoryInfo^ dir in directories)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", dir->FullName, dir->LastWriteTime);
        }
        Console::WriteLine();
        Console::WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        for each (FileInfo^ file in files)
        {
            Console::WriteLine(
                "{0,-25} {1,25}", file->Name, file->LastWriteTime);
        }
    } // Main()
}; // App()
int main()
{
    App::Main();
}
using System;
using System.IO;
class App
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\";
        string searchPattern = "c*";
        DirectoryInfo di = new DirectoryInfo(path);
        DirectoryInfo[] directories =
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly);
        FileInfo[] files =
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);
        Console.WriteLine(
            "Directories that begin with the letter \"c\" in {0}", path);
        foreach (DirectoryInfo dir in directories)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime);
        }
        Console.WriteLine();
        Console.WriteLine(
            "Files that begin with the letter \"c\" in {0}", path);
        foreach (FileInfo file in files)
        {
            Console.WriteLine(
                "{0,-25} {1,25}", file.Name, file.LastWriteTime);
        }
    } // Main()
} // App()
open System.IO
// Specify the directory you want to manipulate.
let path = @"c:\"
let searchPattern = "c*"
let di = DirectoryInfo path
let directories = di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly)
let files = di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly)
printfn $"Directories that begin with the letter \"c\" in {path}"
for dir in directories do
    printfn $"{dir.FullName,-25} {dir.LastWriteTime,25}"
printfn $"\nFiles that begin with the letter \"c\" in {path}"
for file in files do
    printfn $"{file.Name,-25} {file.LastWriteTime,25}"
Imports System.IO
Class App
    Public Shared Sub Main()
        ' Specify the directory you want to manipulate.
        Dim path As String = "c:\\"
        Dim searchPattern As String = "c*"
        Dim di As DirectoryInfo = New DirectoryInfo(path)
        Dim directories() As DirectoryInfo = _
            di.GetDirectories(searchPattern, SearchOption.TopDirectoryOnly)
        Dim files() As FileInfo = _
            di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly)
        Console.WriteLine( _
            "Directories that begin with the letter 'c' in {0}", path)
        Dim dir As DirectoryInfo
        For Each dir In directories
            Console.WriteLine( _
                "{0,-25} {1,25}", dir.FullName, dir.LastWriteTime)
        Next dir
        Console.WriteLine()
        Console.WriteLine( _
            "Files that begin with the letter 'c' in {0}", path)
        Dim file As FileInfo
        For Each file In files
            Console.WriteLine( _
                "{0,-25} {1,25}", file.Name, file.LastWriteTime)
        Next file
    End Sub
End Class
注解
              searchPattern 可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern使用以下通配符说明符。
| 通配符说明符 | 匹配 | 
|---|---|
| *(星号) | 该位置的零个或多个字符。 | 
| ? (问号) | 该位置的零个字符或一个字符。 | 
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 ". 字符串 searchPattern “s*”搜索以字母“s”开头的所有名称 path 。
如果没有子目录,或者没有与 参数匹配的 searchPattern 子目录,此方法将返回一个空数组。
此方法预填充以下 DirectoryInfo 属性的值: