次の方法で共有


DirectoryInfo.GetDirectories メソッド (String)

現在の DirectoryInfo 内にあり、指定した検索基準に一致するディレクトリの配列を返します。

Overloads Public Function GetDirectories( _
   ByVal searchPattern As String _) As DirectoryInfo()
[C#]
public DirectoryInfo[] GetDirectories(stringsearchPattern);
[C++]
public: DirectoryInfo* GetDirectories(String* searchPattern) [];
[JScript]
public function GetDirectories(
   searchPattern : String) : DirectoryInfo[];

パラメータ

  • searchPattern
    検索文字列。たとえば、単語 "System" で始まるすべてのディレクトリを検索するには、"System*" を指定します。

戻り値

searchPattern に一致する DirectoryInfo 型の配列。

例外

例外の種類 条件
ArgumentNullException searchPattern が null 参照 (Visual Basic では Nothing) です。
DirectoryNotFoundException DirectoryInfo オブジェクトにカプセル化されているパスが無効です (割り当てられていないドライブが指定されている場合など)。
SecurityException 呼び出し元に、必要なアクセス許可がありません。

解説

ワイルドカードを使用できます。たとえば、 searchPattern に文字列 "*t" を指定すると、 path 内のすべてのディレクトリ名のうち、文字 "t" で終わる名前が検索されます。 searchPattern に文字列 "s*" を指定した場合は、 path 内のすべてのディレクトリ名のうち、文字 "s" で始まる名前が検索されます。

文字列 ".." は、ディレクトリ名 "a..b" のような有効なディレクトリ名の一部として指定する場合にだけ、 searchPattern に指定できます。ディレクトリ階層を上に移動するためには使用できません。

サブディレクトリが存在しないか、 searchPattern に一致するサブディレクトリが見つからない場合、このメソッドはルート ディレクトリだけを返します。

このメソッドの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
ディレクトリをコピーする。 Directory
ディレクトリの名前を変更、またはディレクトリを移動する。 Directory.Move

DirectoryInfo.MoveTo

ディレクトリを削除する。 Directory.Delete

DirectoryInfo.Delete

ディレクトリを作成する。 CreateDirectory

Directory

サブディレクトリを作成する。 CreateSubdirectory
ディレクトリ内のファイルを参照する。 Name
ディレクトリ内のすべてのサブディレクトリにあるすべてのファイルを参照する。 GetFileSystemInfos
ディレクトリのサイズを取得する。 Directory
ファイルが存在するかどうかを判別する。 Exists
ディレクトリが存在するかどうかを判別する。 Exists

使用例

[Visual Basic, C#, C++] 指定した文字を含むパス内のディレクトリの数をカウントする例を次に示します。

 
Imports System
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

[C#] 
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());
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int main() {
    try {
        DirectoryInfo* di = new DirectoryInfo(S"c:\\");

        // Get only subdirectories that contain the letter "p."
        DirectoryInfo* dirs[] = di->GetDirectories(S"*p*");
        Console::WriteLine(S"The number of directories containing the letter p is {0}.", __box(dirs->Length));

        Collections::IEnumerator* myEnum = dirs->GetEnumerator();
        while (myEnum->MoveNext()) {
            DirectoryInfo* diNext = __try_cast<DirectoryInfo*>(myEnum->Current);

            Console::WriteLine(S"The number of files in {0} is {1}", diNext, 
                __box(diNext->GetFiles()->Length));
        }
    } catch (Exception* e) {
        Console::WriteLine(S"The process failed: {0}", e);
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

.NET Framework セキュリティ:

参照

DirectoryInfo クラス | DirectoryInfo メンバ | System.IO 名前空間 | DirectoryInfo.GetDirectories オーバーロードの一覧 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み