©2009 Microsoft Corporation. All rights reserved.
.NET Framework クラス ライブラリ
Directory.GetFiles メソッド (String, String)

指定したディレクトリ内の指定した検索パターンに一致するファイル名を返します。

名前空間: System.IO
アセンブリ: mscorlib (mscorlib.dll 内)

Visual Basic (宣言)
Public Shared Function GetFiles ( _
    path As String, _
    searchPattern As String _
) As String()
Visual Basic (使用法)
Dim path As String
Dim searchPattern As String
Dim returnValue As String()

returnValue = Directory.GetFiles(path, searchPattern)
C#
public static string[] GetFiles (
    string path,
    string searchPattern
)
C++
public:
static array<String^>^ GetFiles (
    String^ path, 
    String^ searchPattern
)
J#
public static String[] GetFiles (
    String path, 
    String searchPattern
)
JScript
public static function GetFiles (
    path : String, 
    searchPattern : String
) : String[]

パラメータ

path

検索するディレクトリ。

searchPattern

path 内のファイル名と対応させる検索文字列。このパラメータは、2 つのピリオド ("..") で終了することはできません。また、2 つのピリオド ("..") に続けて DirectorySeparatorChar [ http://msdn.microsoft.com/ja-jp/library/system.io.path.directoryseparatorchar(VS.80).aspx ] または AltDirectorySeparatorChar [ http://msdn.microsoft.com/ja-jp/library/system.io.path.altdirectoryseparatorchar(VS.80).aspx ] を指定したり、InvalidPathChars [ http://msdn.microsoft.com/ja-jp/library/system.io.path.invalidpathchars(VS.80).aspx ] の文字を含めたりすることはできません。

戻り値

指定したディレクトリ内の指定した検索パターンに一致するファイル名を格納する String 配列。ファイル名には完全パスが含まれます。
例外の種類条件

UnauthorizedAccessException [ http://msdn.microsoft.com/ja-jp/library/system.unauthorizedaccessexception(VS.80).aspx ]

呼び出し元に、必要なアクセス許可がありません。

ArgumentException [ http://msdn.microsoft.com/ja-jp/library/system.argumentexception(VS.80).aspx ]

path が、長さが 0 の文字列であるか、空白しか含んでいないか、または InvalidPathChars で定義されている無効な文字を 1 つ以上含んでいます。

または

searchPattern に、有効なパターンが含まれていません。

ArgumentNullException [ http://msdn.microsoft.com/ja-jp/library/system.argumentnullexception(VS.80).aspx ]

path または searchPattern が null 参照 (Visual Basic では Nothing) です。

PathTooLongException [ http://msdn.microsoft.com/ja-jp/library/system.io.pathtoolongexception(VS.80).aspx ]

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。たとえば、Windows ベースのプラットフォームの場合、パスの長さは 248 文字未満、ファイル名の長さは 260 文字未満である必要があります。

DirectoryNotFoundException [ http://msdn.microsoft.com/ja-jp/library/system.io.directorynotfoundexception(VS.80).aspx ]

指定したパスが無効です (割り当てられていないドライブであるなど)。

ファイル名には完全パスが含まれます。

searchPattern で許可されるワイルドカード指定子を次に示します。

ワイルドカード文字

説明

*

0 個以上の文字。

?

1 文字。

ワイルドカード指定子以外の文字は、その文字自体を表します。たとえば、searchPattern 文字列 "*t" は、path 内で、文字 "t" で終わるすべての名前を検索します。searchPattern 文字列 "s*" は、path 内で、文字 "s" で始まるすべての名前を検索します。

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

メモメモ

末尾にアスタリスク (*) を付けた検索パターンではすべての拡張子と一致しますが、疑問符を使用する検索パターンではワイルドカードは使用されません。たとえば、ディレクトリ内に file1.txt と file1.txtother という 2 つのファイルが存在する場合、"file?.txt" という検索パターンでは 1 つ目のファイルのみが返されますが、"file*.txt" の検索パターンでは両方のファイルが返されます。

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

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

  • "*.abcd" の場合、拡張子が .abcd のファイルだけが返されます。

  • "*.abcde" の場合、拡張子が .abcde のファイルだけが返されます。

  • "*.abcdef" の場合、拡張子が .abcdef のファイルだけが返されます。

path パラメータは、相対パス情報または絶対パス情報を指定することを許可されています。相対パス情報は、現在の作業ディレクトリに対して相対的に解釈されます。現在の作業ディレクトリを取得するには、GetCurrentDirectory [ http://msdn.microsoft.com/ja-jp/library/system.io.directory.getcurrentdirectory(VS.80).aspx ] のトピックを参照してください。

path パラメータでは大文字と小文字が区別されません。

その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク

参考例があるトピック

テキスト ファイルを作成する。

方法 : ファイルにテキストを書き込む [ http://msdn.microsoft.com/ja-jp/library/6ka1wd3w(VS.80).aspx ]

テキスト ファイルに書き込む。

方法 : ファイルにテキストを書き込む [ http://msdn.microsoft.com/ja-jp/library/6ka1wd3w(VS.80).aspx ]

テキスト ファイルから読み取る。

方法 : ファイルからテキストを読み取る [ http://msdn.microsoft.com/ja-jp/library/db5x7c0d(VS.80).aspx ]

ディレクトリの名前を変更、またはディレクトリを移動する。

Directory.Move [ http://msdn.microsoft.com/ja-jp/library/system.io.directory.move(VS.80).aspx ]

DirectoryInfo.MoveTo [ http://msdn.microsoft.com/ja-jp/library/system.io.directoryinfo.moveto(VS.80).aspx ]

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

File.Move [ http://msdn.microsoft.com/ja-jp/library/system.io.file.move(VS.80).aspx ]

FileInfo.MoveTo [ http://msdn.microsoft.com/ja-jp/library/system.io.fileinfo.moveto(VS.80).aspx ]

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

Directory.Delete [ http://msdn.microsoft.com/ja-jp/library/system.io.directory.delete(VS.80).aspx ]

DirectoryInfo.Delete [ http://msdn.microsoft.com/ja-jp/library/system.io.directoryinfo.delete(VS.80).aspx ]

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

CreateDirectory [ http://msdn.microsoft.com/ja-jp/library/system.io.directory.createdirectory(VS.80).aspx ]

Directory [ http://msdn.microsoft.com/ja-jp/library/system.io.fileinfo.directory(VS.80).aspx ]

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

CreateSubdirectory [ http://msdn.microsoft.com/ja-jp/library/system.io.directoryinfo.createsubdirectory(VS.80).aspx ]

ディレクトリ内のファイルを参照する。

Name [ http://msdn.microsoft.com/ja-jp/library/system.io.fileinfo.name(VS.80).aspx ]

ディレクトリ内のサブディレクトリを参照する。

GetDirectories [ http://msdn.microsoft.com/ja-jp/library/system.io.directory.getdirectories(VS.80).aspx ]

GetDirectories [ http://msdn.microsoft.com/ja-jp/library/system.io.directoryinfo.getdirectories(VS.80).aspx ]

ディレクトリ内のすべてのサブディレクトリにあるすべてのファイルを参照する。

GetFileSystemInfos [ http://msdn.microsoft.com/ja-jp/library/system.io.directoryinfo.getfilesysteminfos(VS.80).aspx ]

ディレクトリのサイズを取得する。

Directory [ http://msdn.microsoft.com/ja-jp/library/system.io.directory(VS.80).aspx ]

ファイルが存在するかどうかを判別する。

Exists [ http://msdn.microsoft.com/ja-jp/library/system.io.file.exists(VS.80).aspx ]

ディレクトリが存在するかどうかを判別する。

Exists [ http://msdn.microsoft.com/ja-jp/library/system.io.directory.exists(VS.80).aspx ]

ファイルの属性を取得する。

GetAttributes [ http://msdn.microsoft.com/ja-jp/library/system.io.file.getattributes(VS.80).aspx ]

ファイルの属性を設定する。

SetAttributes [ http://msdn.microsoft.com/ja-jp/library/system.io.file.setattributes(VS.80).aspx ]

指定した文字で始まるファイルの数をカウントするコード例を次に示します。

Visual Basic
Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get files that begin with the letter "c."
            Dim dirs As String() = Directory.GetFiles("c:\", "c*")
            Console.WriteLine("The number of files starting with c 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
C#
using System;
using System.IO;

class Test 
{
    public static void Main() 
    {
        try 
        {
            // Only get files that begin with the letter "c."
            string[] dirs = Directory.GetFiles(@"c:\", "c*");
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
            foreach (string dir in dirs) 
            {
                Console.WriteLine(dir);
            }
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
C++
using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      
      // Only get files that begin with the letter "c."
      array<String^>^dirs = Directory::GetFiles( "c:\\", "c*" );
      Console::WriteLine( "The number of files starting with c is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Console::WriteLine( myEnum->Current );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}

J#
import System.*;
import System.IO.*;

class Test
{
    public static void main(String[] args)
    {
        try {
            // Only get files that begin with the letter "c."
            String dirs[] = Directory.GetFiles("c:\\", "c*");

            Console.WriteLine("The number of files starting with c is {0}.",
                (Int32)dirs.length);
            String dir = "";
            for ( int iCtr=0; iCtr < dirs.length ; iCtr++ ) {
                dir = dirs[iCtr];
                Console.WriteLine(dir);
            }
        }
        catch (System.Exception e) {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    } //main
} //Test
  • FileIOPermission [ http://msdn.microsoft.com/ja-jp/library/system.security.permissions.fileiopermission(VS.80).aspx ]   (現在のディレクトリのパス情報にアクセスするために必要なアクセス許可)。FileIOPermissionAccess.PathDiscovery [ http://msdn.microsoft.com/ja-jp/library/system.security.permissions.fileiopermissionaccess.pathdiscovery(VS.80).aspx ] (関連する列挙体)

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件 [ http://msdn.microsoft.com/ja-jp/library/8z6watww(VS.80).aspx ] 」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0

関連項目

Directory クラス [ http://msdn.microsoft.com/ja-jp/library/system.io.directory(VS.80).aspx ]
Directory メンバ [ http://msdn.microsoft.com/ja-jp/library/system.io.directory_members(VS.80).aspx ]
System.IO 名前空間 [ http://msdn.microsoft.com/ja-jp/library/system.io(VS.80).aspx ]

その他の技術情報

ファイルおよびストリーム入出力 [ http://msdn.microsoft.com/ja-jp/library/k3352a4t(VS.80).aspx ]
方法 : ファイルからテキストを読み取る [ http://msdn.microsoft.com/ja-jp/library/db5x7c0d(VS.80).aspx ]
方法 : ファイルにテキストを書き込む [ http://msdn.microsoft.com/ja-jp/library/6ka1wd3w(VS.80).aspx ]
タグ: 
 
コミュニティ コンテンツ