Directory.GetDirectories メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した条件を満たすサブディレクトリの名前を返します。
オーバーロード
| 名前 | 説明 |
|---|---|
| GetDirectories(String, String, SearchOption) |
指定したディレクトリ内の指定した検索パターンに一致するサブディレクトリ (パスを含む) の名前を返し、必要に応じてサブディレクトリを検索します。 |
| GetDirectories(String, String, EnumerationOptions) |
指定したディレクトリ内の指定した検索パターンと列挙オプションに一致するサブディレクトリの名前 (パスを含む) を返します。 |
| GetDirectories(String) |
指定したディレクトリ内のサブディレクトリ (パスを含む) の名前を返します。 |
| GetDirectories(String, String) |
指定したディレクトリ内の指定した検索パターンに一致するサブディレクトリの名前 (パスを含む) を返します。 |
GetDirectories(String, String, SearchOption)
指定したディレクトリ内の指定した検索パターンに一致するサブディレクトリ (パスを含む) の名前を返し、必要に応じてサブディレクトリを検索します。
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static string[] GetDirectories(string path, string searchPattern, System.IO.SearchOption searchOption);
static member GetDirectories : string * string * System.IO.SearchOption -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String, searchOption As SearchOption) As String()
パラメーター
- path
- String
検索するディレクトリへの相対パスまたは絶対パス。 この文字列では大文字と小文字は区別されません。
- searchPattern
- String
path内のサブディレクトリの名前と照合する検索文字列。 このパラメーターには、有効なリテラル文字とワイルドカード文字の組み合わせを含めることができますが、正規表現はサポートされていません。
- searchOption
- SearchOption
検索操作にすべてのサブディレクトリを含めるか、現在のディレクトリのみを含めるかを指定する列挙値の 1 つ。
返品
指定した条件に一致するサブディレクトリの完全な名前 (パスを含む) の配列。ディレクトリが見つからない場合は空の配列。
例外
2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。
GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。
-または-
searchPattern には有効なパターンが含まれていません。
path または searchPattern が null。
searchOption が有効な SearchOption 値ではありません。
呼び出し元に必要なアクセス許可がありません。
指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。
指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。
例
次の例では、パス内の指定した文字で始まるディレクトリの数をカウントします。 最上位のディレクトリのみが検索されます。
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
string[] dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly);
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
open System.IO
try
let dirs = Directory.GetDirectories(@"c:\", "p*", SearchOption.TopDirectoryOnly)
printfn $"The number of directories starting with p is {dirs.Length}."
for dir in dirs do
printfn $"{dir}"
with e ->
printfn $"The process failed: {e}"
Imports System.IO
Public Class Test
Public Shared Sub Main()
Try
Dim dirs As String() = Directory.GetDirectories("c:\", "p*", SearchOption.TopDirectoryOnly)
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
Dim dir As String
For Each dir In dirs
Console.WriteLine(dir)
Next
Catch e As Exception
Console.WriteLine("The process failed: {0}", e.ToString())
End Try
End Sub
End Class
注釈
path パラメーターは相対パスまたは絶対パス情報を指定でき、大文字と小文字は区別されません。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、 GetCurrentDirectoryを参照してください。
searchPattern にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。
searchPatternでは、次のワイルドカード指定子を使用できます。
| ワイルドカード指定子 | 一致 |
|---|---|
| * (アスタリスク) | その位置の 0 個以上の文字。 |
| ? (疑問符) | その位置に 1 文字だけ入力します。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern 文字列 "*t" は、文字 "t" で終わる path 内のすべての名前を検索します。
searchPattern文字列 "s*" は、文字 "s" で始まるpath内のすべての名前を検索します。
searchPattern は、2 つのピリオド ("..") で終わることはできません。または、2 つのピリオド ("..") の後に DirectorySeparatorChar または AltDirectorySeparatorCharを含めることはできません。また、無効な文字を含めることもできます。
GetInvalidPathChars メソッドを使用して、無効な文字のクエリを実行できます。
EnumerateDirectoriesメソッドとGetDirectoriesメソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。GetDirectoriesを使用する場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。
こちらもご覧ください
適用対象
GetDirectories(String, String, EnumerationOptions)
指定したディレクトリ内の指定した検索パターンと列挙オプションに一致するサブディレクトリの名前 (パスを含む) を返します。
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static string[] GetDirectories(string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member GetDirectories : string * string * System.IO.EnumerationOptions -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As String()
パラメーター
- path
- String
検索するディレクトリへの相対パスまたは絶対パス。 この文字列では大文字と小文字は区別されません。
- searchPattern
- String
path内のサブディレクトリの名前と照合する検索文字列。 このパラメーターには、有効なリテラル文字とワイルドカード文字の組み合わせを含めることができますが、正規表現はサポートされていません。
- enumerationOptions
- EnumerationOptions
使用する検索と列挙の構成を記述するオブジェクト。
返品
指定したディレクトリ内の検索パターンと列挙オプションに一致するサブディレクトリの完全な名前 (パスを含む) の配列。ディレクトリが見つからない場合は空の配列。
例外
呼び出し元に必要なアクセス許可がありません。
2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。
GetInvalidPathChars()を使用して、無効な文字のクエリを実行できます。
-または-
searchPattern には有効なパターンが含まれません。
path または searchPattern が null。
指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。
指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。
注釈
このメソッドは、指定した検索パターンに一致する指定したディレクトリのすぐ下にあるすべてのサブディレクトリを返します。 指定したディレクトリにサブディレクトリがない場合、または searchPattern パラメーターと一致するサブディレクトリがない場合、このメソッドは空の配列を返します。 一番上のディレクトリのみが検索されます。 サブディレクトリも検索する場合は、GetDirectories(String, String, SearchOption) メソッドを使用し、searchOption パラメーターにAllDirectoriesを指定します。
searchPattern にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。
searchPatternでは、次のワイルドカード指定子を使用できます。
| ワイルドカード指定子 | 一致 |
|---|---|
| * (アスタリスク) | その位置の 0 個以上の文字。 |
| ? (疑問符) | その位置に 1 文字だけ入力します。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern 文字列 "*t" は、文字 "t" で終わる path 内のすべての名前を検索します。
searchPattern文字列 "s*" は、文字 "s" で始まるpath内のすべての名前を検索します。
searchPattern は、2 つのピリオド ("..") で終わることはできません。または、2 つのピリオド ("..") の後に DirectorySeparatorChar または AltDirectorySeparatorCharを含めることはできません。また、無効な文字を含めることもできます。
GetInvalidPathChars メソッドを使用して、無効な文字のクエリを実行できます。
path パラメーターは相対パスまたは絶対パス情報を指定でき、大文字と小文字は区別されません。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、 GetCurrentDirectoryを参照してください。
EnumerateDirectoriesメソッドとGetDirectoriesメソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。GetDirectoriesを使用する場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。
適用対象
GetDirectories(String)
指定したディレクトリ内のサブディレクトリ (パスを含む) の名前を返します。
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path);
public static string[] GetDirectories(string path);
static member GetDirectories : string -> string[]
Public Shared Function GetDirectories (path As String) As String()
パラメーター
- path
- String
検索するディレクトリへの相対パスまたは絶対パス。 この文字列では大文字と小文字は区別されません。
返品
指定したパス内のサブディレクトリの完全な名前 (パスを含む) の配列。ディレクトリが見つからない場合は空の配列。
例外
呼び出し元に必要なアクセス許可がありません。
2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。
GetInvalidPathChars() メソッドを使用して、無効な文字のクエリを実行できます。
path は nullです。
指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。
指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。
例
次の例では、コマンド ラインでファイル名またはディレクトリ名の配列を取得し、その名前の種類を決定し、適切に処理します。
// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;
public class RecursiveFileProcessor
{
public static void Main(string[] args)
{
foreach(string path in args)
{
if(File.Exists(path))
{
// This path is a file
ProcessFile(path);
}
else if(Directory.Exists(path))
{
// This path is a directory
ProcessDirectory(path);
}
else
{
Console.WriteLine("{0} is not a valid file or directory.", path);
}
}
}
// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
public static void ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
ProcessFile(fileName);
// Recurse into subdirectories of this directory.
string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach(string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
}
// Insert logic for processing found files here.
public static void ProcessFile(string path)
{
Console.WriteLine("Processed file '{0}'.", path);
}
}
module RecursiveFileProcessor
open System.IO
// Insert logic for processing found files here.
let processFile path =
printfn $"Processed file '%s{path}'."
// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
let rec processDirectory targetDirectory =
// Process the list of files found in the directory.
let fileEntries = Directory.GetFiles targetDirectory
for fileName in fileEntries do
processFile fileName
// Recurse into subdirectories of this directory.
let subdirectoryEntries = Directory.GetDirectories targetDirectory
for subdirectory in subdirectoryEntries do
processDirectory subdirectory
[<EntryPoint>]
let main args =
for path in args do
if File.Exists path then
// This path is a file
processFile path
elif Directory.Exists path then
// This path is a directory
processDirectory path
else
printfn $"{path} is not a valid file or directory."
0
' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists
Imports System.IO
Imports System.Collections
Public Class RecursiveFileProcessor
Public Overloads Shared Sub Main(ByVal args() As String)
Dim path As String
For Each path In args
If File.Exists(path) Then
' This path is a file.
ProcessFile(path)
Else
If Directory.Exists(path) Then
' This path is a directory.
ProcessDirectory(path)
Else
Console.WriteLine("{0} is not a valid file or directory.", path)
End If
End If
Next path
End Sub
' Process all files in the directory passed in, recurse on any directories
' that are found, and process the files they contain.
Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
' Process the list of files found in the directory.
Dim fileName As String
For Each fileName In fileEntries
ProcessFile(fileName)
Next fileName
Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
' Recurse into subdirectories of this directory.
Dim subdirectory As String
For Each subdirectory In subdirectoryEntries
ProcessDirectory(subdirectory)
Next subdirectory
End Sub
' Insert logic for processing found files here.
Public Shared Sub ProcessFile(ByVal path As String)
Console.WriteLine("Processed file '{0}'.", path)
End Sub
End Class
注釈
このメソッドは、検索パターンとしてアスタリスク (*) が指定された GetDirectories(String, String) と同じであるため、すべてのサブディレクトリが返されます。 サブディレクトリを検索する必要がある場合は、 GetDirectories(String, String, SearchOption) メソッドを使用します。これにより、 searchOption パラメーターを使用してサブディレクトリの検索を指定できます。
EnumerateDirectoriesメソッドとGetDirectoriesメソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。GetDirectoriesを使用する場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
path パラメーターは、相対パス情報または絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、 GetCurrentDirectoryを参照してください。
このメソッドによって返される名前には、 pathで提供されるディレクトリ情報がプレフィックスとして付けられます。
path パラメーターの大文字と小文字の区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別され、Linux ファイル システムでは大文字と小文字が区別されます。
一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。
こちらもご覧ください
適用対象
GetDirectories(String, String)
指定したディレクトリ内の指定した検索パターンに一致するサブディレクトリの名前 (パスを含む) を返します。
public:
static cli::array <System::String ^> ^ GetDirectories(System::String ^ path, System::String ^ searchPattern);
public static string[] GetDirectories(string path, string searchPattern);
static member GetDirectories : string * string -> string[]
Public Shared Function GetDirectories (path As String, searchPattern As String) As String()
パラメーター
- path
- String
検索するディレクトリへの相対パスまたは絶対パス。 この文字列では大文字と小文字は区別されません。
- searchPattern
- String
path内のサブディレクトリの名前と照合する検索文字列。 このパラメーターには、有効なリテラル文字とワイルドカード文字の組み合わせを含めることができますが、正規表現はサポートされていません。
返品
指定したディレクトリ内の検索パターンと一致するサブディレクトリの完全な名前 (パスを含む) の配列。ディレクトリが見つからない場合は空の配列。
例外
呼び出し元に必要なアクセス許可がありません。
2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列で、空白のみを含むか、1 つ以上の無効な文字を含みます。
GetInvalidPathChars()を使用して、無効な文字のクエリを実行できます。
-または-
searchPattern には有効なパターンが含まれません。
path または searchPattern が null。
指定したパス、ファイル名、またはその両方が、システム定義の最大長を超えています。
指定されたパスが無効です (たとえば、マップされていないドライブ上にあります)。
例
次の例では、指定した文字で始まるパス内のディレクトリの数をカウントします。
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
// Only get subdirectories that begin with the letter "p."
string[] dirs = Directory.GetDirectories(@"c:\", "p*");
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}
}
open System.IO
try
// Only get subdirectories that begin with the letter "p."
let dirs = Directory.GetDirectories(@"c:\", "p*")
printfn $"The number of directories starting with p is {dirs.Length}."
for dir in dirs do
printfn $"{dir}"
with e ->
printfn $"The process failed: {e}"
Imports System.IO
Public Class Test
Public Shared Sub Main()
Try
' Only get subdirectories that begin with the letter "p."
Dim dirs As String() = Directory.GetDirectories("c:\", "p*")
Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
Dim dir As String
For Each dir In dirs
Console.WriteLine(dir)
Next
Catch e As Exception
Console.WriteLine("The process failed: {0}", e.ToString())
End Try
End Sub
End Class
注釈
このメソッドは、指定した検索パターンに一致する指定したディレクトリのすぐ下にあるすべてのサブディレクトリを返します。 指定したディレクトリにサブディレクトリがない場合、または searchPattern パラメーターと一致するサブディレクトリがない場合、このメソッドは空の配列を返します。 一番上のディレクトリのみが検索されます。 サブディレクトリも検索する場合は、GetDirectories(String, String, SearchOption) メソッドを使用し、searchOption パラメーターにAllDirectoriesを指定します。
searchPattern にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。
searchPatternでは、次のワイルドカード指定子を使用できます。
| ワイルドカード指定子 | 一致 |
|---|---|
| * (アスタリスク) | その位置の 0 個以上の文字。 |
| ? (疑問符) | その位置に 1 文字だけ入力します。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern 文字列 "*t" は、文字 "t" で終わる path 内のすべての名前を検索します。
searchPattern文字列 "s*" は、文字 "s" で始まるpath内のすべての名前を検索します。
searchPattern は、2 つのピリオド ("..") で終わることはできません。または、2 つのピリオド ("..") の後に DirectorySeparatorChar または AltDirectorySeparatorCharを含めることはできません。また、無効な文字を含めることもできます。
GetInvalidPathChars メソッドを使用して、無効な文字のクエリを実行できます。
path パラメーターは相対パスまたは絶対パス情報を指定でき、大文字と小文字は区別されません。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、 GetCurrentDirectoryを参照してください。
EnumerateDirectoriesメソッドとGetDirectoriesメソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。GetDirectoriesを使用する場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。