次の方法で共有


CFtpFileFind クラス

FTP サーバーのインターネット ファイル検索を支援します。

構文

class CFtpFileFind : public CFileFind

メンバー

パブリック コンストラクター

名前 説明
CFtpFileFind::CFtpFileFind CFtpFileFind オブジェクトを構築します。

パブリック メソッド

名前 説明
CFtpFileFind::FindFile FTP サーバー上のファイルを検索します。
CFtpFileFind::FindNextFile 前の呼び出しから FindFile へのファイル検索を続行します。
CFtpFileFind::GetFileURL 見つかったファイルの URL (パスを含む) を取得します。

解説

CFtpFileFind には、検索を開始し、ファイルを検索し、ファイルに関する URL やその他の説明情報を返すメンバー関数が含まれています。

検索されるインターネットおよびローカル ファイル用に設計されたその他の MFC クラスには、 CGopherFileFindCFileFindがあります。 これらのクラスは、 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;
}

継承階層

CObject

CFileFind

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.txtftp://moose/dir/を返します。

関連項目

CFileFind クラス
階層図
CGopherFileFind クラス
CInternetFile クラス
CGopherFile クラス
CHttpFile クラス