DirectoryInfo.EnumerateDirectories メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在のディレクトリの列挙可能なディレクトリ情報のコレクションを返します。
オーバーロード
EnumerateDirectories(String, SearchOption) |
指定された検索パターンと、サブディレクトリを検索するかどうかを指定するオプションの設定に一致する列挙可能なディレクトリ情報のコレクションを返します。 |
EnumerateDirectories(String, EnumerationOptions) |
指定した検索パターンおよび列挙オプションに一致する列挙可能なディレクトリ情報のコレクションを返します。 |
EnumerateDirectories() |
現在のディレクトリの列挙可能なディレクトリ情報のコレクションを返します。 |
EnumerateDirectories(String) |
指定された検索パターンに一致する列挙可能なディレクトリ情報のコレクションを返します。 |
EnumerateDirectories(String, SearchOption)
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
指定された検索パターンと、サブディレクトリを検索するかどうかを指定するオプションの設定に一致する列挙可能なディレクトリ情報のコレクションを返します。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern, System.IO.SearchOption searchOption);
member this.EnumerateDirectories : string * System.IO.SearchOption -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String, searchOption As SearchOption) As IEnumerable(Of DirectoryInfo)
パラメーター
- searchPattern
- String
ディレクトリの名前と照合する検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。
- searchOption
- SearchOption
検索操作に現在のディレクトリのみを含めるのか、またはすべてのサブディレクトリを含めるのかを指定する列挙値の 1 つ。 既定値は TopDirectoryOnly です。
戻り値
searchPattern
と searchOption
に一致する列挙可能なディレクトリのコレクション。
例外
searchPattern
が null
です。
searchOption
は正しい SearchOption 値ではありません。
DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。
呼び出し元に、必要なアクセス許可がありません。
例
次の例では、このメソッドと メソッドを EnumerateFiles 使用して、スタート ディレクトリ内のファイルとディレクトリを列挙し、10 MB を超えるファイルの名前とサイズを表示します。
using System;
using System.IO;
class Program
{
static void Main(string[] args)
{
// Set a variable to the My Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DirectoryInfo diTop = new DirectoryInfo(docPath);
try
{
foreach (var fi in diTop.EnumerateFiles())
{
try
{
// Display each file over 10 MB.
if (fi.Length > 10000000)
{
Console.WriteLine($"{fi.FullName}\t\t{fi.Length:N0}");
}
}
catch (UnauthorizedAccessException unAuthTop)
{
Console.WriteLine($"{unAuthTop.Message}");
}
}
foreach (var di in diTop.EnumerateDirectories("*"))
{
try
{
foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
{
try
{
// Display each file over 10 MB.
if (fi.Length > 10000000)
{
Console.WriteLine($"{fi.FullName}\t\t{fi.Length:N0}");
}
}
catch (UnauthorizedAccessException unAuthFile)
{
Console.WriteLine($"unAuthFile: {unAuthFile.Message}");
}
}
}
catch (UnauthorizedAccessException unAuthSubDir)
{
Console.WriteLine($"unAuthSubDir: {unAuthSubDir.Message}");
}
}
}
catch (DirectoryNotFoundException dirNotFound)
{
Console.WriteLine($"{dirNotFound.Message}");
}
catch (UnauthorizedAccessException unAuthDir)
{
Console.WriteLine($"unAuthDir: {unAuthDir.Message}");
}
catch (PathTooLongException longPath)
{
Console.WriteLine($"{longPath.Message}");
}
}
}
open System
open System.IO
// Set a variable to the My Documents path.
let docPath = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let diTop = DirectoryInfo docPath
try
for fi in diTop.EnumerateFiles() do
try
// Display each file over 10 MB.
if fi.Length > 10000000 then
printfn $"{fi.FullName}\t\t{fi.Length:N0}"
with :? UnauthorizedAccessException as unAuthTop ->
printfn $"{unAuthTop.Message}"
for di in diTop.EnumerateDirectories "*" do
try
for fi in di.EnumerateFiles("*", SearchOption.AllDirectories) do
try
// Display each file over 10 MB.
if fi.Length > 10000000 then
printfn $"{fi.FullName}\t\t{fi.Length:N0}"
with :? UnauthorizedAccessException as unAuthFile ->
printfn $"unAuthFile: {unAuthFile.Message}"
with :? UnauthorizedAccessException as unAuthSubDir ->
printfn $"unAuthSubDir: {unAuthSubDir.Message}"
with
| :? DirectoryNotFoundException as dirNotFound ->
Console.WriteLine($"{dirNotFound.Message}")
| :? UnauthorizedAccessException as unAuthDir ->
printfn $"unAuthDir: {unAuthDir.Message}"
| :? PathTooLongException as longPath ->
printfn $"{longPath.Message}"
Imports System.IO
Class Program
Public Shared Sub Main(ByVal args As String())
Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim diTop As New DirectoryInfo(dirPath)
Try
For Each fi In diTop.EnumerateFiles()
Try
' Display each file over 10 MB;
If fi.Length > 10000000 Then
Console.WriteLine("{0}" & vbTab & vbTab & "{1}", fi.FullName, fi.Length.ToString("N0"))
End If
Catch unAuthTop As UnauthorizedAccessException
Console.WriteLine($"{unAuthTop.Message}")
End Try
Next
For Each di In diTop.EnumerateDirectories("*")
Try
For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
Try
' // Display each file over 10 MB;
If fi.Length > 10000000 Then
Console.WriteLine("{0}" & vbTab &
vbTab & "{1}", fi.FullName, fi.Length.ToString("N0"))
End If
Catch unAuthFile As UnauthorizedAccessException
Console.WriteLine($"unAuthFile: {unAuthFile.Message}")
End Try
Next
Catch unAuthSubDir As UnauthorizedAccessException
Console.WriteLine($"unAuthSubDir: {unAuthSubDir.Message}")
End Try
Next
Catch dirNotFound As DirectoryNotFoundException
Console.WriteLine($"{dirNotFound.Message}")
Catch unAuthDir As UnauthorizedAccessException
Console.WriteLine($"unAuthDir: {unAuthDir.Message}")
Catch longPath As PathTooLongException
Console.WriteLine($"{longPath.Message}")
End Try
End Sub
End Class
注釈
searchPattern
にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern
使用できます。
ワイルドカード指定子 | [一致する] |
---|---|
* (アスタリスク) | その位置の 0 個以上の文字。 |
? (疑問符) | その位置の 0 文字または 1 文字。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、文字列 "*t" は文字 "t" で終わるすべての名前を検索します。 ". searchPattern
文字列 "s*" は、文字 "s" でpath
始まるすべての名前を検索します。
メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。
を使用 EnumerateDirectoriesすると、コレクション全体が返される前に、オブジェクトのコレクションの DirectoryInfo 列挙を開始できます。
を使用 GetDirectoriesする場合は、オブジェクトの配列全体が返されるの DirectoryInfo を待ってから、配列にアクセスする必要があります。
そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
このメソッドは、次 DirectoryInfo のプロパティの値を事前に設定します。
返されたコレクションはキャッシュされません。コレクションの メソッドを GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
EnumerateDirectories(String, EnumerationOptions)
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
指定した検索パターンおよび列挙オプションに一致する列挙可能なディレクトリ情報のコレクションを返します。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.EnumerateDirectories : string * System.IO.EnumerationOptions -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of DirectoryInfo)
パラメーター
- searchPattern
- String
ディレクトリの名前と照合する検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。
- enumerationOptions
- EnumerationOptions
使用する検索と列挙の構成を記述するオブジェクト。
戻り値
searchPattern
と enumerationOptions
に一致する列挙可能なディレクトリのコレクション。
例外
searchPattern
が null
です。
DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。
呼び出し元に、必要なアクセス許可がありません。
注釈
searchPattern
にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern
使用できます。
ワイルドカード指定子 | [一致する] |
---|---|
* (アスタリスク) | その位置の 0 個以上の文字。 |
? (疑問符) | その位置の 0 文字または 1 文字。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、文字列 "*t" は文字 "t" で終わるすべての名前を検索します。 ". searchPattern
文字列 "s*" は、文字 "s" でpath
始まるすべての名前を検索します。
メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。
を使用 EnumerateDirectoriesすると、コレクション全体が返される前に、オブジェクトのコレクションの DirectoryInfo 列挙を開始できます。
を使用 GetDirectoriesする場合は、オブジェクトの配列全体が返されるの DirectoryInfo を待ってから、配列にアクセスする必要があります。
そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
このメソッドは、次 DirectoryInfo のプロパティの値を事前に設定します。
返されたコレクションはキャッシュされません。コレクションの メソッドを GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
EnumerateDirectories()
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
現在のディレクトリの列挙可能なディレクトリ情報のコレクションを返します。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories();
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories ();
member this.EnumerateDirectories : unit -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories () As IEnumerable(Of DirectoryInfo)
戻り値
現在のディレクトリ内の列挙可能なディレクトリのコレクション。
例外
DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。
呼び出し元に、必要なアクセス許可がありません。
例
次の例では、C:\Program Files ディレクトリの下のサブディレクトリを列挙し、LINQ クエリを使用して、 プロパティの値を確認して、2009 より前に作成されたすべてのディレクトリの名前を CreationTimeUtc 返します。
サブディレクトリの名前のみが必要な場合は、パフォーマンスを向上させるために静的 Directory クラスを使用します。 例については、 メソッドを EnumerateDirectories(String) 参照してください。
using System;
using System.IO;
namespace EnumDir
{
class Program
{
static void Main(string[] args)
{
// Set a variable to the Documents path.
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DirectoryInfo dirPrograms = new DirectoryInfo(docPath);
DateTime StartOf2009 = new DateTime(2009, 01, 01);
var dirs = from dir in dirPrograms.EnumerateDirectories()
where dir.CreationTimeUtc > StartOf2009
select new
{
ProgDir = dir,
};
foreach (var di in dirs)
{
Console.WriteLine($"{di.ProgDir.Name}");
}
}
}
}
// </Snippet1>
module program
// <Snippet1>
open System
open System.IO
// Set a variable to the Documents path.
let docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
let dirPrograms = DirectoryInfo docPath
let startOf2009 = DateTime(2009, 01, 01)
let dirs =
query {
for dir in dirPrograms.EnumerateDirectories() do
where (dir.CreationTimeUtc > startOf2009)
select {| ProgDir = dir |}
}
for di in dirs do
printfn $"{di.ProgDir.Name}"
// </Snippet1>
Imports System.IO
Module Module1
Sub Main()
Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim dirPrograms As New DirectoryInfo(dirPath)
Dim StartOf2009 As New DateTime(2009, 1, 1)
Dim dirs = From dir In dirPrograms.EnumerateDirectories()
Where dir.CreationTimeUtc > StartOf2009
For Each di As DirectoryInfo In dirs
Console.WriteLine("{0}", di.Name)
Next
End Sub
End Module
注釈
メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。
を使用 EnumerateDirectoriesすると、コレクション全体が返される前に、オブジェクトのコレクションの DirectoryInfo 列挙を開始できます。
を使用 GetDirectoriesする場合は、オブジェクトの配列全体が返されるの DirectoryInfo を待ってから、配列にアクセスする必要があります。
そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
このメソッドは、次 DirectoryInfo のプロパティの値を事前に設定します。
返されたコレクションはキャッシュされません。コレクションの メソッドを GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
EnumerateDirectories(String)
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
- ソース:
- DirectoryInfo.cs
指定された検索パターンに一致する列挙可能なディレクトリ情報のコレクションを返します。
public:
System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern);
member this.EnumerateDirectories : string -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String) As IEnumerable(Of DirectoryInfo)
パラメーター
- searchPattern
- String
ディレクトリの名前と照合する検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。
戻り値
searchPattern
に一致する列挙可能なディレクトリのコレクション。
例外
searchPattern
が null
です。
DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。
呼び出し元に、必要なアクセス許可がありません。
注釈
searchPattern
にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern
使用できます。
ワイルドカード指定子 | [一致する] |
---|---|
* (アスタリスク) | その位置の 0 個以上の文字。 |
? (疑問符) | その位置の 0 文字または 1 文字。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、文字列 "*t" は文字 "t" で終わるすべての名前を検索します。 ". searchPattern
文字列 "s*" は、文字 "s" でpath
始まるすべての名前を検索します。
メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。
を使用 EnumerateDirectoriesすると、コレクション全体が返される前に、オブジェクトのコレクションの DirectoryInfo 列挙を開始できます。
を使用 GetDirectoriesする場合は、オブジェクトの配列全体が返されるの DirectoryInfo を待ってから、配列にアクセスする必要があります。
そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。
このメソッドは、次 DirectoryInfo のプロパティの値を事前に設定します。
返されたコレクションはキャッシュされません。コレクションの メソッドを GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
.NET