次の方法で共有


DirectoryInfo.GetFiles メソッド (String)

現在のディレクトリから、"*.txt" などの指定した searchPattern に一致するファイルの一覧を返します。

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

パラメータ

  • searchPattern
    "*.txt" などの検索文字列。

戻り値

FileInfo 型の配列。

例外

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

解説

ワイルドカードを使用できます。たとえば、 searchPattern に文字列 "*.txt" を指定すると、拡張子が "txt" のファイル名がすべて検索されます。 searchPattern に文字列 "s*" を指定すると、文字 "s" で始まるすべてのファイル名が検索されます。ファイルが存在しないか、 DirectoryInfo 内に searchPattern 文字列に一致するファイルがない場合、このメソッドは空の配列を返します。

拡張子の長さがちょうど 3 文字の場合の searchPattern の一致の動作は、拡張子が 3 文字を超えている場合の動作と異なります。ちょうど 3 文字の searchPattern の場合は、3 文字以上の拡張子を持つファイルが返されます。 searchPattern の文字数が 1、2、または 4 以上の場合は、その長さを持つ拡張子のファイルだけが返されます。

searchPattern パラメータにさまざまな長さが設定された場合の動作を次のリストに示します。

  • "*.abc" の場合、.abc、.abcd、.abcde、.abcdef などの拡張子を持つファイルが返されます。
  • "*.abcd" の場合、拡張子 .abcd のファイルだけが返されます。
  • "*.abcde" の場合、拡張子 .abcde のファイルだけが返されます。
  • "*.abcdef" の場合、拡張子 .abcdef のファイルだけが返されます。

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

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

DirectoryInfo.MoveTo

ファイルの名前を変更、またはファイルを移動する。 File.Move

FileInfo.MoveTo

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

DirectoryInfo.Delete

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

Directory

サブディレクトリを作成する。 CreateSubdirectory
ディレクトリ内のファイルを参照する。 Name
ディレクトリ内のサブディレクトリを参照する。 GetDirectories

GetDirectories

ディレクトリ内のすべてのサブディレクトリにあるすべてのファイルを参照する。 GetFileSystemInfos
ディレクトリのサイズを取得する。 Directory
ファイルが存在するかどうかを判別する。 Exists
ディレクトリが存在するかどうかを判別する。 Exists
ファイルの属性を取得する。 GetAttributes
ファイルの属性を設定する。 SetAttributes

使用例

[Visual Basic, C#, C++] 指定した文字を含むディレクトリおよびファイルの数をカウントする例を次に示します。

 
Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            Dim di As DirectoryInfo = New DirectoryInfo("c:\")
            'Get only subdirectories that contain the letter "p."
            Dim dirs As DirectoryInfo() = di.GetDirectories("*p*")
            Console.WriteLine("Number of directories with a p: {0}", dirs.Length)
            Dim diNext As DirectoryInfo
            ' Count all files in each subdirectory that contain the letter "e."
            For Each diNext In dirs
                Console.WriteLine("The number of files in {0} with an e is {1}", _
                 diNext, diNext.GetFiles("*e*").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("Number of directories with a p: {0}", dirs.Length);

            // Count all the files in each subdirectory that contain the letter "e."
            foreach (DirectoryInfo diNext in dirs) 
            {
                Console.WriteLine("The number of files in {0} with an e is {1}", diNext, 
                    diNext.GetFiles("*e*").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"Number of directories with a p: {0}", __box(dirs->Length));

        // Count all the files in each subdirectory that contain the letter S"e."
        Collections::IEnumerator* myEnum = dirs->GetEnumerator();
        while (myEnum->MoveNext()) {
            DirectoryInfo* diNext = __try_cast<DirectoryInfo*>(myEnum->Current);
            Console::WriteLine(S"The number of files in {0} with an e is {1}", diNext, 
                __box(diNext->GetFiles(S"*e*")->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.GetFiles オーバーロードの一覧 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み