CFtpFileFind クラス
FTP サーバーのインターネット ファイル検索を支援します。
構文
class CFtpFileFind : public CFileFind
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CFtpFileFind::CFtpFileFind | CFtpFileFind オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CFtpFileFind::FindFile | FTP サーバー上のファイルを検索します。 |
CFtpFileFind::FindNextFile | 前の呼び出しから FindFile へのファイル検索を続行します。 |
CFtpFileFind::GetFileURL | 見つかったファイルの URL (パスを含む) を取得します。 |
解説
CFtpFileFind
には、検索を開始し、ファイルを検索し、ファイルに関する URL やその他の説明情報を返すメンバー関数が含まれています。
検索されるインターネットおよびローカル ファイル用に設計されたその他の MFC クラスには、 CGopherFileFind と CFileFindがあります。 これらのクラスは、 CFtpFileFind
と共に、サーバー プロトコルやファイルの種類 (ローカル コンピューターまたはリモート サーバー) に関係なく、クライアントが特定のファイルを検索するためのシームレスなメカニズムを提供します。 HTTP は検索に必要な直接ファイル操作をサポートしていないため、HTTP サーバーで検索するための MFC クラスはありません。
CFtpFileFind
およびその他の WinInet クラスの使用方法の詳細については、「WinInet を使用したInternet プログラミング」の記事を参照。
例
次のコードは、FTP サーバーの現在のディレクトリ内のすべてのファイルを列挙する方法を示しています。
// create a session object to initialize WININET library
// Default parameters mean the access method in the registry
// (that is, set by the "Internet" icon in the Control Panel)
// will be used.
CInternetSession sess(_T("My FTP Session"));
CFtpConnection *pConnect = NULL;
try
{
// Request a connection to ftp.microsoft.com. Default
// parameters mean that we'll try with username = ANONYMOUS
// and password set to the machine name @ domain name
pConnect = sess.GetFtpConnection(_T("ftp.microsoft.com"));
// use a file find object to enumerate files
CFtpFileFind finder(pConnect);
// start looping
BOOL bWorking = finder.FindFile(_T("*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
_tprintf_s(_T("%s\n"), (LPCTSTR)finder.GetFileURL());
}
}
catch (CInternetException *pEx)
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
_tprintf_s(_T("ERROR! %s\n"), sz);
pEx->Delete();
}
// if the connection is open, close it
if (pConnect != NULL)
{
pConnect->Close();
delete pConnect;
}
継承階層
CFtpFileFind
要件
Header: afxinet.h
CFtpFileFind::CFtpFileFind
このメンバー関数は、 CFtpFileFind
オブジェクトを構築するために呼び出されます。
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
パラメーター
pConnection
CFtpConnection
オブジェクトを指すポインターです。 FTP 接続を取得するには、 CInternetSession::GetFtpConnection を呼び出します。
dwContext
CFtpFileFind
オブジェクトのコンテキスト識別子。 詳細については、次の remarksを参照してください。
解説
dwContext の既定値は、MFC によって、CFtpFileFind
オブジェクトを作成した CInternetSession オブジェクトからCFtpFileFind
オブジェクトに送信されます。 既定値をオーバーライドして、コンテキスト識別子を選択した値に設定できます。 コンテキスト識別子が CInternetSession::OnStatusCallback に返され、識別されるオブジェクトの状態が提供されます。 コンテキスト識別子の詳細については、「 Internet First Steps: WinInet 」を参照してください。
例
このトピックの前のクラスの概要の例を参照してください。
CFtpFileFind::FindFile
FTP ファイルを検索するには、このメンバー関数を呼び出します。
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwFlags = INTERNET_FLAG_RELOAD);
パラメーター
pstrName
検索するファイルの名前を含む文字列へのポインター。 NULL の場合、呼び出しはワイルドカード検索 (*) を実行します。
dwFlags
このセッションの処理方法を説明するフラグ。 これらのフラグはビットごとの OR 演算子 (|
) と組み合わせることができ、次のようになります。
INTERNET_FLAG_RELOAD
ローカルにキャッシュされている場合でも、ネットワークからデータを取得します。 これが既定のフラグです。INTERNET_FLAG_DONT_CACHE
ローカルや任意のゲートウェイにデータをキャッシュしません。INTERNET_FLAG_RAW_DATA
未加工データ (FTP の WIN32_FIND_DATA 構造体) を返すように既定値をオーバーライドします。INTERNET_FLAG_SECURE
Secure Sockets Layer または PCT を使用して、ネットワーク上のトランザクションをセキュリティで保護します。 このフラグは HTTP 要求にのみ適用されます。INTERNET_FLAG_EXISTING_CONNECT
可能であれば、要求ごとに新しいセッションを作成するのではなく、新しいFindFile
要求に対してサーバーへの既存の接続を再利用します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。 拡張エラー情報を取得するには、Win32 関数 GetLastError を呼び出します。
解説
FindFile
を呼び出して最初の FTP ファイルを取得した後、FindNextFile を呼び出して後続の FTP ファイルを取得できます。
例
このトピックの前の例を参照してください。
CFtpFileFind::FindNextFile
このメンバー関数を呼び出して、 FindFile メンバー関数の呼び出しで開始されたファイル検索を続行します。
virtual BOOL FindNextFile();
戻り値
その他のファイルがある場合は 0 以外。見つかったファイルがディレクトリ内の最後のファイルであるか、エラーが発生した場合は 0。 拡張エラー情報を取得するには、Win32 関数 GetLastError を呼び出します。 見つかったファイルがディレクトリ内の最後のファイルである場合、または一致するファイルが見つからない場合、 GetLastError
関数はERROR_NO_MORE_FILESを返します。
解説
属性関数を呼び出す前に、この関数を少なくとも 1 回呼び出す必要があります ( CFileFind::FindNextFile を参照)。
FindNextFile
は、Win32 関数 FindNextFile をラップします。
例
このトピックの前の例を参照してください。
CFtpFileFind::GetFileURL
このメンバー関数を呼び出して、指定したファイルの URL を取得します。
CString GetFileURL() const;
戻り値
ユニバーサル リソース ロケーター (URL) のファイルとパス。
解説
GetFileURL
は、URL 形式で結果を提供する点を除いて、 CFileFind::GetFilePath のメンバー関数に似ています。 CFileFind::GetFilePath
と同様に、結果にはファイル名は含まれません。 たとえば、//moose/dir/file1.txt:
にあるfile1.txt
はftp://moose/dir/
を返します。
関連項目
CFileFind クラス
階層図
CGopherFileFind クラス
CInternetFile クラス
CGopherFile クラス
CHttpFile クラス