DelphiのTDirectory.GetFilesでファイルの一覧を取得する

以前にC++Builder用に書いた「TDirectory::GetFilesでファイルの一覧を取得する」のDelphi版です。

System.IOUtilsユニットのTDirectory.GetFilesは、指定のディレクトリ内のファイルのリストを返します。
(TDirectory.GetFilesはDelphi 2010/C++Builder 2010で追加された機能です。)

第一引数のPathでファイルを列挙したいディレクトリのパスを指定します。

第二引数のSearchPatternでフィルタリングします。

第三引数のOptionでサブディレクトリも検索するかどうかを指定します。

Pathは必須の引数です。SearchPatternとOptionはオプションです。

uses System.IOUtils, System.Types;

var
  Path: string;
  SearchPattern: string;
  Option: TSearchOption;
  FileNames: TStringDynArray;
  FileName: string;
begin
  // ファイルを列挙したいディレクトリのパス
  Path := Edit1.Text;
  // ファイル名に一致する検索パターン
  SearchPattern := '*.txt';
  // ディレクトリの列挙モード
  Option := TSearchOption.soTopDirectoryOnly; // トップレベル列挙モード
  // Option := TSearchOption.soAllDirectories; // 再帰列挙モード

  //指定のディレクトリ内のファイルのリスト
  FileNames := TDirectory.GetFiles(Path, SearchPattern, Option);
  for FileName in FileNames do
  begin
    ListBox1.Items.Add(FileName);
  end;
end;

フィルタリングをより細かく指定したい時には、TDirectory::TFilterPredicate型を引数に使用します。

var
  Path: string;
  SearchPattern: string;
  Option: TSearchOption;
  FileNames: TStringDynArray;
  FileName: string;
  Filter: TDirectory.TFilterPredicate;
begin
  // ファイルを列挙したいディレクトリのパス
  Path := Edit1.Text;
  // ファイル名に一致する検索パターン
  SearchPattern := '*.txt';
  // ディレクトリの列挙モード
  Option := TSearchOption.soTopDirectoryOnly; // トップレベル列挙モード
  // Option := TSearchOption.soAllDirectories; // 再帰列挙モード

  //望まない結果を除去するために使われるルーチン
  Filter := function(const Path: string; const SearchRec: TSearchRec): Boolean
    begin
      Result := Length(SearchRec.Name) > 5; //5文字以上のファイルのみ
    end;

  //指定のディレクトリ内のファイルのリスト
  FileNames := TDirectory.GetFiles(Path, SearchPattern, Option, Filter);
  for FileName in FileNames do
  begin
    ListBox1.Items.Add(FileName);
  end;

コメント

  1. Pingback: TDirectory::GetFilesでファイルの一覧を取得する - 山本隆の開発日誌

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください