Directory.EnumerateFiles メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定された条件を満たすファイルの完全名から成る、列挙可能なコレクションを返します。
オーバーロード
EnumerateFiles(String, String, SearchOption) |
指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。 |
EnumerateFiles(String, String, EnumerationOptions) |
指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイルの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。 |
EnumerateFiles(String) |
指定されたパスに存在するファイルの完全名から成る、列挙可能なコレクションを返します。 |
EnumerateFiles(String, String) |
指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。 |
EnumerateFiles(String, String, SearchOption)
- ソース:
- Directory.cs
- ソース:
- Directory.cs
- ソース:
- Directory.cs
指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)
パラメーター
- path
- String
検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
- searchPattern
- String
path
内のファイル名と対応させる検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。
- searchOption
- SearchOption
検索操作に現在のディレクトリのみを含めるのか、またはすべてのサブディレクトリを含めるのかを指定する列挙値の 1 つ。 既定値は TopDirectoryOnly です。
戻り値
path
で指定したディレクトリ内にあり、指定した検索パターンおよび検索オプションと一致する、ファイルの完全名 (パスを含む) の列挙可能なコレクション。
例外
2.1 より前のバージョンの.NET Frameworkと .NET Core: path
は長さ 0 の文字列、空白のみを含む、または無効な文字を含みます。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。
- または -
searchPattern
には有効なパターンが含まれません。
searchOption
は正しい SearchOption 値ではありません。
たとえば、マップされていないドライブへの参照など、path
は無効です。
path
はファイル名です。
指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。
呼び出し元に、必要なアクセス許可がありません。
呼び出し元に、必要なアクセス許可がありません。
例
次の例では、ディレクトリとそのサブディレクトリ内のすべてのテキスト ファイルを取得し、それらを新しいディレクトリに移動する方法を示します。 ファイルが移動されると、元のディレクトリに存在しなくなります。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
次の例では、 という拡張子 .txt
を持つすべてのファイルを再帰的に列挙し、ファイルの各行を読み取り、文字列 "Microsoft" が含まれている場合は行を表示します。
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
open System
open System.IO
try
// Set a variable to the My Documents path.
let docPath =
Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let files =
query {
for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
for line in File.ReadLines file do
where (line.Contains "Microsoft")
select {| File = file; Line = line |}
}
for f in files do
printfn $"{f.File}\t{f.Line}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq
Module Module1
Sub Main()
Try
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
From line In File.ReadLines(chkFile)
Where line.Contains("Microsoft")
Select New With {.curFile = chkFile, .curLine = line}
For Each f In files
Console.WriteLine($"{f.File}\t{f.Line}")
Next
Console.WriteLine($"{files.Count} files found.")
Catch uAEx As UnauthorizedAccessException
Console.WriteLine(uAEx.Message)
Catch pathEx As PathTooLongException
Console.WriteLine(pathEx.Message)
End Try
End Sub
End Module
注釈
searchPattern
にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern
使用できます。
ワイルドカード指定子 | [一致する] |
---|---|
* (アスタリスク) | その位置の 0 個以上の文字。 |
? (疑問符) | その位置に 1 文字だけ入力します。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern
文字列 "*t" は文字 "t" で path
終わるすべての名前を検索します。
searchPattern
文字列 "s*" は、文字 "s" でpath
始まるすべての名前を検索します。
注意
.NET Frameworkのみ: でsearchPattern
アスタリスク ワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは、指定した拡張子で始まる拡張子を持つファイルも返します。 たとえば、検索パターン "*.xls" は "book.xls" と "book.xlsx" の両方を返します。 この動作は、検索パターンでアスタリスクが使用され、指定されたファイル拡張子が 3 文字の場合にのみ発生します。 検索パターンのどこかで疑問符ワイルドカード文字を使用する場合、このメソッドは指定されたファイル拡張子と完全に一致するファイルのみを返します。 次の表は、.NET Frameworkでのこの異常を示しています。
ディレクトリ内のファイル | 検索パターン | .NET 5 以降の戻り値 | .NET Framework 戻り値 |
---|---|---|---|
file.ai、file.aif | *。Ai | file.ai | file.ai |
book.xls、book.xlsx | *.xls | book.xls | book.xls、book.xlsx |
ello.txt、hello.txt、hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
は、2 つのピリオド ("..") で終わることはできません。また、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを指定することも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。
相対パス情報は、 パラメーターを使用して path
指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して決定できます。
メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。 を使用EnumerateFilesすると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。 を使用 GetFilesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。
返されたコレクションはキャッシュされません。 コレクションで を GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
EnumerateFiles(String, String, EnumerationOptions)
- ソース:
- Directory.cs
- ソース:
- Directory.cs
- ソース:
- Directory.cs
指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイルの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)
パラメーター
- path
- String
検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
- searchPattern
- String
path
内のファイル名と対応させる検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。
- enumerationOptions
- EnumerationOptions
使用する検索と列挙の構成を記述するオブジェクト。
戻り値
path
で指定したディレクトリ内にあり、指定した検索パターンおよび列挙オプションと一致する、ファイルの完全名 (パスを含む) の列挙可能なコレクション。
例外
2.1 より前のバージョンの.NET Frameworkと .NET Core: path
は長さ 0 の文字列、空白のみを含む、または無効な文字を含みます。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。
- または -
searchPattern
には有効なパターンが含まれません。
searchOption
は正しい SearchOption 値ではありません。
たとえば、マップされていないドライブへの参照など、path
は無効です。
path
はファイル名です。
指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。
呼び出し元に、必要なアクセス許可がありません。
注釈
searchPattern
にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern
使用できます。
ワイルドカード指定子 | [一致する] |
---|---|
* (アスタリスク) | その位置の 0 個以上の文字。 |
? (疑問符) | その位置の 1 文字だけ。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern
文字列 "*t" は文字 "t" で path
終わるすべての名前を検索します。
searchPattern
文字列 "s*" は、文字 "s" でpath
始まるすべての名前を検索します。
注意
.NET Frameworkのみ: でsearchPattern
アスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、指定した拡張子で始まる拡張子を持つファイルも返されます。 たとえば、検索パターン "*.xls" は "book.xls" と "book.xlsx" の両方を返します。 この動作は、検索パターンでアスタリスクが使用され、指定されたファイル拡張子が正確に 3 文字である場合にのみ発生します。 検索パターンのどこかで疑問符のワイルドカード文字を使用する場合、このメソッドは指定されたファイル拡張子と完全に一致するファイルのみを返します。 次の表は、.NET Frameworkでのこの異常を示しています。
ディレクトリ内のファイル | 検索パターン | .NET 5 以降の 戻り値 | .NET Framework 戻り値 |
---|---|---|---|
file.ai、file.aif | *。Ai | file.ai | file.ai |
book.xls、book.xlsx | *.xls | book.xls | book.xls、book.xlsx |
ello.txt、hello.txt、hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
は、2 つのピリオド ("..") で終わることも、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを含めることも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。
相対パス情報は、 パラメーターを使用して path
指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して判断できます。
メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。 を使用EnumerateFilesすると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。 を使用 GetFilesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。
返されたコレクションはキャッシュされません。 コレクションの を GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
EnumerateFiles(String)
- ソース:
- Directory.cs
- ソース:
- Directory.cs
- ソース:
- Directory.cs
指定されたパスに存在するファイルの完全名から成る、列挙可能なコレクションを返します。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)
パラメーター
- path
- String
検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
戻り値
path
で指定したディレクトリ内にあるファイルの完全名 (パスを含む) から成る列挙可能なコレクション。
例外
2.1 より前のバージョンの.NET Frameworkと .NET Core: path
は長さ 0 の文字列、空白のみを含む、または無効な文字が含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。
path
が null
です。
たとえば、マップされていないドライブへの参照など、path
は無効です。
path
はファイル名です。
指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。
呼び出し元に、必要なアクセス許可がありません。
呼び出し元に、必要なアクセス許可がありません。
例
次の例は、ディレクトリ内のすべてのファイルを取得し、新しいディレクトリに移動する方法を示しています。 ファイルを移動すると、元のディレクトリに存在しなくなります。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles sourceDirectory
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
次の例では、指定したディレクトリ内のファイルを列挙し、ファイルの各行を読み取り、文字列 "Europe" が含まれている場合は行を表示します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all files containing the word 'Europe'.
var files = from file in
Directory.EnumerateFiles(@"\\archives1\library\")
where file.ToLower().Contains("europe")
select file;
foreach (var file in files)
{
Console.WriteLine("{0}", file);
}
Console.WriteLine("{0} files found.", files.Count<string>().ToString());
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
}
open System
open System.IO
try
// All files containing the word 'Europe'.
let files =
Directory.EnumerateFiles @"\\archives1\library\"
|> Seq.filter (fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
注釈
相対パス情報は、 パラメーターを使用して path
指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して判断できます。
メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。 を使用EnumerateFilesすると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。 を使用 GetFilesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。
返されたコレクションはキャッシュされません。コレクションの を GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
EnumerateFiles(String, String)
- ソース:
- Directory.cs
- ソース:
- Directory.cs
- ソース:
- Directory.cs
指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)
パラメーター
- path
- String
検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。
- searchPattern
- String
path
内のファイル名と対応させる検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。
戻り値
指定した検索パターンに一致し、path
で指定したディレクトリの中にあるファイルの完全名 (パスを含む) から成る列挙可能なコレクション。
例外
2.1 より前のバージョンの.NET Frameworkと .NET Core: path
は長さ 0 の文字列、空白のみを含む、または無効な文字が含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。
- または -
searchPattern
には有効なパターンが含まれません。
たとえば、マップされていないドライブへの参照など、path
は無効です。
path
はファイル名です。
指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。
呼び出し元に、必要なアクセス許可がありません。
呼び出し元に、必要なアクセス許可がありません。
例
次の例は、ディレクトリ内のすべてのテキスト ファイルを取得し、新しいディレクトリに移動する方法を示しています。 ファイルを移動すると、元のディレクトリに存在しなくなります。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
次の例では、".txt" 拡張子を持つ指定したディレクトリ内のファイルを列挙し、ファイルの各行を読み取り、文字列 "Europe" が含まれている場合は行を表示します。
using System;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all .txt files containing the word 'Europe'.
var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
where file.ToLower().Contains("europe")
select file;
foreach (var file in files)
{
Console.WriteLine("{0}", file);
}
Console.WriteLine("{0} files found.", files.Count<string>().ToString());
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
}
open System
open System.IO
try
// All .txt files containing the word 'Europe'.
let files =
Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
|> Seq.filter(fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all .txt files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
注釈
searchPattern
にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern
使用できます。
ワイルドカード指定子 | [一致する] |
---|---|
* (アスタリスク) | その位置の 0 個以上の文字。 |
? (疑問符) | その位置の 1 文字だけ。 |
ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern
文字列 "*t" は文字 "t" で path
終わるすべての名前を検索します。
searchPattern
文字列 "s*" は、文字 "s" でpath
始まるすべての名前を検索します。
注意
.NET Frameworkのみ: でsearchPattern
アスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、指定した拡張子で始まる拡張子を持つファイルも返されます。 たとえば、検索パターン "*.xls" は "book.xls" と "book.xlsx" の両方を返します。 この動作は、検索パターンでアスタリスクが使用され、指定されたファイル拡張子が正確に 3 文字である場合にのみ発生します。 検索パターンのどこかで疑問符のワイルドカード文字を使用する場合、このメソッドは指定されたファイル拡張子と完全に一致するファイルのみを返します。 次の表は、.NET Frameworkでのこの異常を示しています。
ディレクトリ内のファイル | 検索パターン | .NET 5 以降の 戻り値 | .NET Framework 戻り値 |
---|---|---|---|
file.ai、file.aif | *。Ai | file.ai | file.ai |
book.xls、book.xlsx | *.xls | book.xls | book.xls、book.xlsx |
ello.txt、hello.txt、hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
は、2 つのピリオド ("..") で終わることはできません。また、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを指定することも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。
相対パス情報は、 パラメーターを使用して path
指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して決定できます。
メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。を使用EnumerateFilesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetFilesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。
返されたコレクションはキャッシュされません。 コレクションで を GetEnumerator 呼び出すたびに、新しい列挙が開始されます。
適用対象
.NET