共用方式為


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 伺服器上沒有用於搜尋的 MFC 類別,因為 HTTP 不支援搜尋所需的直接檔案操作。

如需如何使用 CFtpFileFind 和其他 WinInet 類別的詳細資訊,請參閱使用 WinInet 進行網際網路程式設計一文

範例

下列程式碼示範如何列舉 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

需求

標頭: afxinet.h

CFtpFileFind::CFtpFileFind

呼叫這個成員函式來建構 CFtpFileFind 物件。

explicit CFtpFileFind(
    CFtpConnection* pConnection,
    DWORD_PTR dwContext = 1);

參數

pConnection
CFtpConnection 物件的指標。 您可以呼叫 CInternetSession::GetFtp連線ion 來取得 FTP 連線

dwCoNtext
物件的內容識別碼 CFtpFileFind 。 如需詳細資訊,請參閱下列 備註

備註

dwCoNtext 預設值是由 MFC 從建立 CFtpFileFind 物件的 CInternetSession 物件傳送至 CFtpFileFind 物件。 您可以覆寫預設值,將內容識別碼設定為您選擇的值。 內容識別碼會傳回至 CInternetSession::OnStatusCallback ,以提供識別物件的狀態。 如需內容識別碼的詳細資訊,請參閱網際網路第一個步驟: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 覆寫預設值以傳回原始資料( WIN32_FIND_DATA FTP 的結構)。

  • INTERNET_FLAG_SECURE 使用安全通訊端層或 PCT 保護連線上的交易。 此旗標僅適用于 HTTP 要求。

  • INTERNET_FLAG_EXISTING_CONNECT 可能的話,請針對新 FindFile 要求重複使用伺服器的現有連線,而不是為每個要求建立新的會話。

傳回值

如果成功則為非零;否則為 0。 若要取得擴充的錯誤資訊,請呼叫 Win32 函式 GetLastError

備註

呼叫 FindFile 以擷取第一個 FTP 檔案之後,您可以呼叫 FindNextFile 來擷取後續的 FTP 檔案。

範例

請參閱本主題中的先前範例。

CFtpFileFind::FindNextFile

呼叫此成員函式,以繼續以呼叫 FindFile 成員函式開始的 檔案搜尋。

virtual BOOL FindNextFile();

傳回值

如果有更多檔案,則為非零;如果找到的檔案是目錄中的最後一個檔案,或發生錯誤,則為零。 若要取得擴充的錯誤資訊,請呼叫 Win32 函式 GetLastError 。 如果找到的檔案是目錄中的最後一個檔案,或者找不到相符的檔案,函 GetLastError 式會傳回ERROR_NO_MORE_FILES。

備註

您至少必須在呼叫任何屬性函式之前呼叫此函式一次(請參閱 CFileFind::FindNextFile )。

FindNextFile 包裝 Win32 函式 FindNextFile

範例

請參閱本主題稍早的範例。

CFtpFileFind::GetFileURL

呼叫這個成員函式以取得指定檔案的 URL。

CString GetFileURL() const;

傳回值

通用資源定位器 (URL) 的檔案和路徑。

備註

GetFileURL 類似于成員函式 CFileFind::GetFilePath ,不同之處在于它會以 URL 格式提供結果。 與 相同 CFileFind::GetFilePath ,結果不包含檔案名。 例如, file1.txt 位於 中的 //moose/dir/file1.txt: 會傳 ftp://moose/dir/ 回 。

另請參閱

CFileFind 類別
階層架構圖表
CGopherFileFind 類別
CInternetFile 類別
CGopherFile 類別
CHttpFile 類別