TNB Library
公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧

アーカイブ内ファイル検索クラス [詳解]

#include <TnbArchiveFileFinder.h>

+ CArchiveFileFinder の継承関係図

公開型

enum  EFindType { ALL , FILE_ONLY , DIR_ONLY }
 検索タイプ [詳解]
 

公開メンバ関数

iterator begin (void)
 [反復] 先頭iterator. [詳解]
 
 CArchiveFileFinder (void)
 コンストラクタ [詳解]
 
iterator end (void)
 [反復] 最後iterator. [詳解]
 
void Finish (void)
 [設定] 検索終了. [詳解]
 
const WIN32_FIND_DATA & Get (void) const
 [取得] 検索情報取得 [詳解]
 
CArchiverDllHandlerGetDllHandler (void) const
 [取得] 使用アーカイバDLL管理クラス、参照 [詳解]
 
CStr GetFoundName (void) const
 [取得] 検索ファイル名取得 [詳解]
 
CAscii GetTargetArchiveFileName (void) const
 [取得] 使用アーカイブファイル名、取得 [詳解]
 
bool Initialize (CArchiverDllHandler *pDll, LPCTSTR lpszArcFileName, DWORD dwMode=0)
 [設定] 初期化 [詳解]
 
bool IsDirectory (void) const
 [確認] ディレクトリか? [詳解]
 
bool IsFinding (void) const
 [確認] 検索中確認 [詳解]
 
bool Next (void)
 [検索] 次検索 [詳解]
 
const WIN32_FIND_DATA * operator-> (void) const
 [取得] 検索情報取得 [詳解]
 
const TIndividualInfoRefPtr (void) const
 [取得] 検索情報参照 [詳解]
 
bool Start (LPCTSTR lpszPath, LPCTSTR lpszMask=_T("*.*"), EFindType type=ALL)
 [検索] 検索開始 [詳解]
 
virtual ~CArchiveFileFinder (void)
 デストラクタ [詳解]
 

限定公開メンバ関数

virtual void OnFinish (void)
 [通知] 検索終了通知 [詳解]
 
virtual bool OnNext (WIN32_FIND_DATA &_data)
 [通知] 次検索通知 [詳解]
 
virtual bool OnStart (WIN32_FIND_DATA &_data, LPCTSTR lpszName)
 [通知] 検索開始通知 [詳解]
 

詳解

アーカイブ内ファイル検索クラス

指定のアーカイブファイルからファイルを検索するためのクラスです。
使用例
    C7zDllHandler arc;
    CArchiveFileFinder ff(&arc);
    if ( ff.Find("c:\\$NtUninstallKB_Vol1.7z", "*.*", 0, ff.FILE_ONLY) )
    {
        TRACE1("%s\n", ff.GetFindingPath());
        do
        {
            TRACE1("  found = %s\n", ff->cFileName);
        } while ( ff.Next() );
    }
    
CFileFinder 同様に iterator を使用した検索も可能です。
覚え書き
iterator 操作時、元の CArchiveFileFinder が使用されます。
UNICODE プロジェクトでも OEMコードで動きます。
必要ファイル
TnbArchiveFileFinder.h
todo:
他の FileFinder に比べ、フォルダの概念がない。
日付
06/12/14 新規
08/03/27 改造中

TnbArchiveFileFinder.h53 行目に定義があります。

列挙型メンバ詳解

◆ EFindType

enum EFindType
inherited

検索タイプ

列挙値
ALL 

全部対象

FILE_ONLY 

ファイルのみ

DIR_ONLY 

ディレクトリのみ

TnbFileFinder.h36 行目に定義があります。

構築子と解体子

◆ CArchiveFileFinder()

CArchiveFileFinder ( void  )

コンストラクタ

TnbArchiveFileFinder.h154 行目に定義があります。

◆ ~CArchiveFileFinder()

virtual ~CArchiveFileFinder ( void  )
virtual

デストラクタ

TnbArchiveFileFinder.h159 行目に定義があります。

関数詳解

◆ begin()

iterator begin ( void  )
inherited

[反復] 先頭iterator.

先頭要素を指す反復子を取得

覚え書き
Find() で、成功してからイテレータを取得します。
戻り値
iterator

TnbFileFinder.h92 行目に定義があります。

◆ end()

iterator end ( void  )
inherited

[反復] 最後iterator.

最後要素の次を指す反復子を取得

戻り値
iterator

TnbFileFinder.h102 行目に定義があります。

◆ Finish()

void Finish ( void  )
inherited

[設定] 検索終了.

覚え書き
検索中の場合、検索を停止します( Next() メソッドは false を返すようになります)。

TnbFileFinder.h123 行目に定義があります。

◆ Get()

const WIN32_FIND_DATA & Get ( void  ) const
inherited

[取得] 検索情報取得

戻り値
ファイル情報の参照。
例外
CEmptyException未検索、あるいは未発見時に本メソッドをコールすると、スローされます。

TnbFileFinder.h213 行目に定義があります。

◆ GetDllHandler()

CArchiverDllHandler * GetDllHandler ( void  ) const

[取得] 使用アーカイバDLL管理クラス、参照

覚え書き
コンストラクタで指定したアーカイバDll管理クラスのアドレスを返すだけです。
戻り値
参照。

TnbArchiveFileFinder.h229 行目に定義があります。

◆ GetFoundName()

CStr GetFoundName ( void  ) const
inherited

[取得] 検索ファイル名取得

戻り値
ファイル名

TnbFileFinder.h233 行目に定義があります。

◆ GetTargetArchiveFileName()

CAscii GetTargetArchiveFileName ( void  ) const

[取得] 使用アーカイブファイル名、取得

覚え書き
Find() で渡したアーカイブファイル名を返すだけです。
戻り値
ファイル名。

TnbArchiveFileFinder.h219 行目に定義があります。

◆ Initialize()

bool Initialize ( CArchiverDllHandler pDll,
LPCTSTR  lpszArcFileName,
DWORD  dwMode = 0 
)

[設定] 初期化

覚え書き
インスタンス作成後、検索の前に一度はこのメソッドを実行します。
引数
pDllアーカイバDLL管理クラスのインスタンス。 本インスタンスで使用中、破棄してはいけません。
lpszArcFileName対象のアーカイブファイル名。
dwModeアーカイバ種による。省略すると0。
戻り値
true成功。
false失敗。正しいアーカイバが指定されていないか、アーカイブファイルが見つからない。

TnbArchiveFileFinder.h174 行目に定義があります。

◆ IsDirectory()

bool IsDirectory ( void  ) const
inherited

[確認] ディレクトリか?

覚え書き
検索中の時、発見した情報がディレクトリか否か調べることが出来ます。
戻り値
trueディレクトリ
falseファイル or 未検索

TnbFileFinder.h250 行目に定義があります。

◆ IsFinding()

bool IsFinding ( void  ) const
inherited

[確認] 検索中確認

戻り値
true検索中。
falseしていない。

TnbFileFinder.h203 行目に定義があります。

◆ Next()

bool Next ( void  )
inherited

[検索] 次検索

覚え書き
Find() で true の場合、次にこのメソッドを使用します。その後繰り返して 本メソッド使うことで複数の情報を得ることが出来ます。
戻り値
true一つ以上発見。発見した内容はGetメソッドで取得可能。
false未発見。

TnbFileFinder.h176 行目に定義があります。

◆ OnFinish()

virtual void OnFinish ( void  )
protectedvirtual

[通知] 検索終了通知

覚え書き
検索中の場合、検索を停止します( OnNext() メソッドは false を返すようになります)。

CAbstractFileFinderを実装しています。

TnbArchiveFileFinder.h288 行目に定義があります。

◆ OnNext()

virtual bool OnNext ( WIN32_FIND_DATA &  _data)
protectedvirtual

[通知] 次検索通知

覚え書き
Find() で true の場合、次にこのメソッドを使用します。その後繰り返して 本メソッド使うことで複数の情報を得ることが出来ます。
引数
[out]_data発見した場合、発見情報が格納されます。
戻り値
true一つ以上発見。
false未発見。

CAbstractFileFinderを実装しています。

TnbArchiveFileFinder.h270 行目に定義があります。

◆ OnStart()

virtual bool OnStart ( WIN32_FIND_DATA &  _data,
LPCTSTR  lpszName 
)
protectedvirtual

[通知] 検索開始通知

引数
[out]_data発見した場合、発見情報が格納されます。
[in]lpszName検索パス指定。ワイルドカードによる指定が必要です。
戻り値
true一つ以上発見。
false未発見。

CAbstractFileFinderを実装しています。

TnbArchiveFileFinder.h243 行目に定義があります。

◆ operator->()

const WIN32_FIND_DATA * operator-> ( void  ) const
inherited

[取得] 検索情報取得

戻り値
ファイル情報の参照。
例外
CEmptyException未検索、あるいは未発見時に本メソッドをコールすると、スローされます。

TnbFileFinder.h224 行目に定義があります。

◆ RefPtr()

const TIndividualInfo * RefPtr ( void  ) const

[取得] 検索情報参照

覚え書き
Get() に比べ、インスタンスで記憶しているデータを返すだけなので、高速です。
戻り値
NULL失敗
NULL以外ファイル情報の参照。

TnbArchiveFileFinder.h205 行目に定義があります。

◆ Start()

bool Start ( LPCTSTR  lpszPath,
LPCTSTR  lpszMask = _T("*.*"),
EFindType  type = ALL 
)
inherited

[検索] 検索開始

覚え書き
検索は必ずこのメソッドから開始します。
引数
lpszPath検索パス指定。
lpszMask検索マスク指定。ワイルドカードによる指定が必要です。省略すると *.* が指定されます。
type検索タイプ。
戻り値
true一つ以上発見。発見した内容は Get() メソッド等で取得可能。
false未発見。

TnbFileFinder.h140 行目に定義があります。