C++BuilderでTJvSearchFilesを使ってみる。
■使い方
- RootDirectoryプロパティで検索するルートディレクトリを指定します
JvSearchFiles1->RootDirectory = L"C:\\test";
- DirOptionプロパティでサブディレクトリを検索するかどうかを指定します。
//ルートディレクトリとそのサブディレクトリのみ JvSearchFiles1->DirOption = doIncludeSubDirs;
- Optionsプロパティで検索処理の振る舞いを指定します。
JvSearchFiles1->Options << soSearchFiles; //ファイルを探します。 JvSearchFiles1->Options << soSearchDirs; //ディレクトリを探します。
- FileParamsプロパティやDirParamsプロパティで検索対象の条件を指定します。
//ファイルサイズが1バイト以上のファイルを検索する JvSearchFiles1->FileParams->MinSize = 1; JvSearchFiles1->FileParams->SearchTypes << stMinSize;
- Searchメソッドで検索を開始します。
bool ret = JvSearchFiles1->Search();
- Filesプロパティ、Directoriesプロパティ、TotalDirectoriesプロパティ、TotalFilesプロパティ、TotalFileSizeプロパティなどで検索結果を取得します。
■主なプロパティ
- Filesプロパティ
検索結果のファイル名が格納されます。
OptionsプロパティにsoStripDirsが含まれる時は、ファイル名のみ格納されます。
OptionsプロパティにsoStripDirsが含まれない時は、ファイル名はフルパスで格納されます。OptionsプロパティにsoOwnerDataが含まれる時は、Filesプロパティに格納されません。
OptionsプロパティにsoSearchFilesが含まれない時は、Filesプロパティに格納されません。 -
Directoriesプロパティ
OptionsプロパティにsoStripDirsが含まれる時は、ディレクトリ名のみ格納されます。
OptionsプロパティにsoStripDirsが含まれない時は、ディレクトリ名はフルパスで格納されます。OptionsプロパティにsoOwnerDataが含まれる時は、Directoriesプロパティに格納されません。
OptionsプロパティにsoSearchDirsが含まれない時は、Directoriesプロパティに格納されません。 -
DirOptionプロパティ
サブディレクトリを検索するかどうかを指定します。
-
RootDirectoryプロパティ
検索するルートディレクトリを指定します。
-
FileParamsプロパティ
どのファイルが検索結果に含まれるかについて指定します。
-
DirParamsプロパティ
どのディレクトリが検索結果に含まれるかについて指定します。
-
Searchingプロパティ
検索中の時はtrueを返します。
-
RecurseDepthプロパティ
検索するサブディレクトリの最大の深さを指定します。
0を指定すると、ディレクトリを探します。
ルートディレクトリは深さ1、ルートディレクトリのサブディレクトリは深さ1、ルートディレクトリのサブディレクトリのサブディレクトリは深さ2になります。 -
TotalFilesプロパティ
検索して見つかったファイルの数を返します。
-
TotalFileSizeプロパティ
検索して見つかったファイルとディレクトリの総バイト数を返します。
-
TotalDirectoriesプロパティ
検索して見つかったディレクトリの総数を返します。
■主なメソッド
- Searchメソッド
エラーが発生した、またはユーザーによって中止された時はfalseを返します。
-
Abortメソッド
検索処理を中止します。
OnProgressイベントの中で呼ぶことができます。
■主なイベント
- OnBeginScanDirイベント
ディレクトリの検索を開始した時に発生します。
引数ANameにディレクトリのフルパスが渡されます。
-
OnCheckイベント
プログラムで検索条件に一致するかどうかを判定する時はOnCheckイベントを使用します。
検索結果に含める時は引数Resultをtrueにします。
検索中の対象はFindDataプロパティで得ることができます。void __fastcall TForm1::JvSearchFiles1Check(TObject *Sender, bool &Result) { // "TEST"の文字がファイル名に含まれているファイルを検索する UnicodeString FileName = JvSearchFiles1->FindData.cFileName; Result = (FileName.UpperCase().Pos("TEST") > 0); }
- OnFindDirectoryイベント
ディレクトリが見つかった時に発生します。
引数ANameにディレクトリのフルパスが渡されます。
-
OnFindFileイベント
ファイルが見つかった時に発生します。
引数ANameにファイルのフルパスが渡されます。